数组中普通查找和折半查找

来源:互联网 发布:amd显卡驱动设置优化 编辑:程序博客网 时间:2024/05/19 06:51

普通查找

#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){int array[10] = { 1, 23, 565, 4, 7, 87, 34, 2, 8, 44 };for (int i = 0; i < 10; i++){printf("%d\n", array[i]);}int idx = -1; //设定一个下标的值int findData = 5; //设置所要查询的值for (int i = 0; i < 10; i++){if (findData == array[i]){idx = i;break;}}if (idx == -1)printf("your findData is not in array\n");elseprintf("your findData is in array idx=%d\n", idx);return 0;}


折半查找

#include "stdafx.h"#define N 5int _tmain(int argc, _TCHAR* argv[]){int array[N] = { 2, 1, 5, 4, 3 };//二分法查找(折半查找)的数据必须是顺序排列的int findData = 1;int idx = -1;  int low = 0;int high = N - 1;int mid;while (low<=high)    //在尾节点>=头节点条件下{mid = (low + high) / 2;if (array[mid] == findData){idx = mid;break;}if (array[mid] > findData){high = mid - 1;}else{low = mid + 1;}}if (idx == -1){printf("find none\n");}elseprintf("idx=%d\n",idx);  //输出下标return 0;}