本文共 1730 字,大约阅读时间需要 5 分钟。
//实验四
#includeusing namespace std;//顺序查找与二分查找//顺序查找就是循环//二分查找//使用前提:数据必须排序int ordersearch(int* a, int x, int n, int count[]){ int k; for (int i=0; i < n; i++) { count[0]++; if (a[i] == x) { k = i; cout << "找到了元素位置:" << k << endl; return k; } }}int binarysearch(int* a, int x, int n, int count[]){ int low; int high; low = 0; high = n - 1; while (low <= high) { int mid = (low + high) / 2; count[0]++; if (a[mid] == x) { cout << "找到了元素位置:" << mid << endl; return mid; } else if (a[mid] < x) { low = mid + 1; } else if (a[mid] > x) { high = mid - 1; } } return -1;}int main() { int a[] = { 11,33,44,56,78,89,99,101,123,235,678 }; int count[1] = { 0 }; int num = sizeof(a) / sizeof(int); //cout << (9 + 10) / 2 << endl; count[0] = 0; ordersearch(a, 678, num, count); cout << "顺序检索在最差情况下(这里用的是检索的是最后一个)的比较次数为:" << count[0] << endl; count[0] = 0; binarysearch(a, 678, num,count); cout << "二分检索在最差情况下(这里用的是检索的是最后一个)的比较次数为:" << count[0] << endl; count[0] = 0; ordersearch(a, 99, num, count); cout << "顺序检索在一般情况下(这里用的是检索的是中间一个)的比较次数为:" << count[0] << endl; count[0] = 0; binarysearch(a, 99, num, count); cout << "二分检索在一般情况下(这里用的是检索的是中间一个)的比较次数为:" << count[0] << endl; count[0] = 0; ordersearch(a, 11, num, count); cout << "顺序检索在最佳情况下(这里用的是检索的是第一个)的比较次数为:" << count[0] << endl; count[0] = 0; binarysearch(a, 11, num, count); cout << "二分检索在最佳情况下(这里用的是检索的是第一个)的比较次数为:" << count[0] << endl; return 0;}
转载地址:http://svcki.baihongyu.com/