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 }