1)利用readData()函數從data1.txt中讀入不同規模的數據存入數組,
編寫基於數組的順序查找算法,測試數據量為1萬、5萬、10萬、20萬、
30萬、40萬和50萬時的數據查詢時間。
算法代碼如下:
1 int seqsearch(int a[],int n,int key) 2 { 3 int k=n-1; 4 while(k>=0&&a[k]!=key) 5 k--; 6 return (k); 7 }
2)利用readData()函數從data2.txt中讀入不同規模的有序數據存入數組,
編寫基於數組的二分查找算法,測試數據量為1萬、5萬、10萬、20萬、30萬、
40萬和50萬時的數據查詢時間。
算法代碼如下:
1 int binSearch(int a[],int n,int key) 2 { 3 int low=0; 4 int high=n-1; 5 int mid; 6 while(low<=high) 7 { 8 mid=(low+high)/2; 9 if(a[mid]==key) return mid; 10 if(a[mid]>key) 11 high=mid-1; 12 else 13 low=mid+1; 14 } 15 return -1; 16 }
3)請設計冒泡排序算法函數void bubbleSort(int a[],int n),對a[1]..a[n]進行升序排序。
並測試在不同數據規模下的排序效率。
算法代碼如下:
1 void bubbleSort(int a[],int n) 2 { 3 int i=1,j,flag=1; 4 while(i<=n-1&&flag) 5 { 6 flag=0; 7 for(j=1;j<=n-1-i;j++) 8 if(a[j+1]<a[j]) 9 { 10 a[0]=a[j]; 11 a[j]=a[j+1]; 12 a[j+1]=a[0]; 13 flag=1; 14 } 15 i++; 16 } 17 }
