设计算法的原则

设计算法的原则,第1张

设计算法的原则:

1、正确性:算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需要、能够得到问题的正确答案。

2、可读性:设计算法的目的,一方面是为了让计算机执行,但还有一个重要的目的就是为了便于他人的阅读,让人理解和交流,自己将来也可阅读。如果可读性不好,时间长了自己都不知道写了什么,可读性是评判算法(也包括实现它的程序代码)好坏很重要的标志。

3、健壮性:当输入的数据非法时,算法应当恰当地做出反应或进行相应处理,而不是莫名其妙谈仿的输出含侍纤结果。并且处理出错的方法不应是中断程序的执行,而应是返回一个表示错误或错误性质的值,以便于在更高的抽象层次上谈仿进行处理。

4、高效率与低存储量:通常,算法的效率指的是算法的执行时间;算法的存储量指的是算法执行过程中所需要的最大存储空间,两者的复杂度都与问题的规模有关。算法分析的任务是对设计的每一个具体的算法,利用数学工具,讨论其复杂度,探讨具体算法对问题的适应性。

扩展资料:

算法的“正确”通常在用法上有很大的差别,大体分为以下4个层次:

1、算法程序没有语法错误;

2、算法程序能够根据正确的输入的值得到满足要求的输出结果;

3、算法程序能够根据错误的输出的值满足规格说明的输出结果;

4、算法程序对于精心设计、极其刁难的测试数据都能满足要求的输出结果。

对于这4层含义,层次要求最低,因为仅仅没有语法错误实在谈不上是好的算法。而层次(4)是最困难的,人们几乎不可能逐一验证所有的输入都得到正确的结果。因此,算法的正确性在大部分情况下都不可能用程序来证明,而是用数学方法证明的。

1.

public class TestRandomArray

{

public static void main(String[] args)

{

int maxline = (int) (Math.random()*100)

int[] array = new int[maxline]

for(int i=0i<maxlinei++)

{

int temp = (int) (Math.random()*100)

if(temp>=10&&temp<=99)

{

array[i] = temp

}

else

i--

}

for(int j=0j<maxlinej++)

{

int max = array[0]

if(array[j]>max)

{

max=array[j]

array[j] = array[0]

array[0] = max

}

}

for(int k=0k<maxlinek++)

{

System.out.print(array[k]+" ")

}

}

}

2.

public class TestNumber100

{

public static void main(String[] args)

{

for(int i=1i<100i++)

{

if(i%3==0&&(i%5!=0)&&(i%9!=0))

System.out.println(i+"正正 ")

else

continue

}

}

}

3.貌似没举芹悔结果

public class Test3

{

public static void main(String[] args)

{

/*for(int i=0i<=9i++)

{

for(int j=0j<=9j++)

{

int code = 10000+i*1000+j*100+23

if((code%57)==0&&(code%67)==0&&i!=j)

{

System.out.println("x="+i+","+"首野y="+j)

}

else

System.out.println(i+" "+j)

}

}*/

for(int i=10023i<=19923i++)

if(i==0&&i==0)

System.out.println(i+" ")

}

}

4.

class Caculate {

int money

Caculate(){

money = 10

}

public int charge (int distance){

if (distance <3){

money = 10

}

if ((distance >= 3) &&distance <15)

{

money = money + 2*(distance-3)

}

if (distance >15 )

{

money = money + 2*12 + 3*(distance - 15)

}

return money

}

public static void main(String args[]) {

System.out.println("请输入公里数")

int distance_example=0

Scanner key = new Scanner(System.in)

int n = key.nextInt()

distance_example = n

Caculate pay = new Caculate()

pay.money = pay.charge(distance_example)

System.out.println("You need to pay money:"+pay.money+" distance is:"+distance_example)

}

}

5.

public class Test4

{

public static void main (String args[])

{

int n=100

while(n<=1000)

{

int i,j,k

i=n/100

j=(n-i*100)/10

k=n%10

if((Math.pow(i, 3)+Math.pow(j, 3)+Math.pow(k, 3))==n)

System.out.print(n+String.valueOf('\t'))

n++

}

}

}

6.

public class TestMoney

{

public static void main(String[] args)

{

int one=1,two=2,five=5

for(int i=1i<100i++)

for(int j=1j<50j++)

for(int k=1k<20k++)

{

if((i*one+j*two+k*five)==100)

System.out.println(i+"个一分,"+j+"个两分,"+k+"个五分")

}

}

}

7.

import java.io.BufferedReader

import java.io.IOException

import java.io.InputStreamReader

public class TestJieCheng

{

public static void main (String args[])

{

int a=0,b=1float sum=0

System.out.print("请输入要计算的阶乘:")

try

{

BufferedReader in=new BufferedReader(new InputStreamReader(System.in))

a=Integer.parseInt(in.readLine())

}catch(IOException e){}

for(int i=1i<=ai++)

{

b=b*i

}

System.out.print(a+"的阶乘是"+b)

}

}

7.

public class XXX{

public static void main()

{

for(int i=1 i<=10i++)

{

int j,sum

j=math(i)

sum+=j

}

int math(int i){

int k=i

int b=1

for(int w=1w<=kw++)

{

b=b*w

}

return b

}

}

}

8.

public class Test4

{

public static void main (String args[])

{

int n=100

while(n<=1000)

{

int i,j,k

i=n/100

j=(n-i*100)/10

k=n%10

if((Math.pow(i, 3)+Math.pow(j, 3)+Math.pow(k, 3))==n)

System.out.print(n+String.valueOf('\t'))

n++

}

}

}

9.

public class TestNumber2

{

public static void main(String[] args)

{

final int maxline = 20

double sum = 0

double [] denominator = new double [maxline]

double [] numerator = new double [maxline]

for(int i=2i<denominator.lengthi++)

{

denominator[0]=1

denominator[1]=2

denominator[i]=denominator[i-1]+denominator[i-2]

}

for(int j=2j<numerator.lengthj++)

{

numerator[0]=2

numerator[1]=3

numerator[j]=numerator[j-1]+numerator[j-2]

}

for(int k=0k<maxlinek++)

{

sum+=(numerator[k])/denominator[k]

}

System.out.println(sum)

}

}

10.

import java.io.*

public class 根据输入的三个数求一元二次方程

{

public static void main (String args[]) throws NumberFormatException, IOException

{

float a[]=new float [3]

for(int i=0i<a.lengthi++)

{

System.out.println("请输入第"+(i+1)+"个数")

BufferedReader in =new BufferedReader(new InputStreamReader(System.in))

a[i]=Float.parseFloat(in.readLine())

}

float x1=0,x2=0

x1=(float) ((((-1)*a[1])+(Math.sqrt(a[1]*a[1]-4*a[0]*a[2])))/(2*a[0]))

x2=(float) ((((-1)*a[1])-(Math.sqrt(a[1]*a[1]-4*a[0]*a[2])))/(2*a[0]))

System.out.print(a[0]+"X2"+a[1]+"X"+a[2]+"的两个根是:")

System.out.print(x1+"和"+x2)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12287030.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存