double fun(double y,double x,int n) { y=x; while(n>1) { y=y*x; n--; } return y; }
1) 算法1 void fun1(int n) { i=1,k=100; while (i<=n) { k=k+1; i+=2; } }
2) 算法2 void fun2(int b[], int n) { int i,j,k.x; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if (b[k]>b[j]) k=j; x=b[i]; b[i]=b[k]; b[k]=x; } }
void fun3(int n) { int i=0,s=0; while (s<=n) { i++; s=s+i; } }
3) 算法3 用Java語言實現下列算法並進行單元測試,請給出算法的時間複雜度。 1)求一個整數二維數組Arr[N][N]的全部元素之和。 2)對於輸入的任意3個整數,將它按從大到小的順序輸出。 3)對於輸入的任意n個整數,輸出其中的最大和最小元素。
1) 算法複雜度爲O(n^2)java
public class SumArray{ public static void main(String[] args) { int array[][] = {{2,3,2},{2,4,6},{6,8,9}}; SumArray arr = new SumArray(); int a = arr.sumArray(array); System.out.println(a); } public int sumArray(int array[][]){ int sum = 0; for (int i = 0; i < array.length ; i++) { for (int j = 0; j < array[i].length; j++) { sum = sum + array[i][j]; } } return sum; } }
2)第2、三問可用一樣的代碼寫出,方法爲選擇排序。算法
public class sort { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("請輸入須要多少個數: "); int a = scan.nextInt(); int arr[] = new int[a]; System.out.println("請輸入"+ a +"個整數:"); for(int i=0 ; i<a; i++){ arr[i]= scan.nextInt(); } int arr1[] = selectionsort.selectionSort(arr); System.out.println("排序後的數組爲"); for(int j =0; j<a;j++){ System.out.println(arr1[j]); } System.out.println("最大值爲:" + arr1[a-1]); System.out.println("最小值爲:" + arr1[0]); } }