二分查找法:
- 二分查找也称折半查找,它是一种效率较高的查找方法。
- 但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列.
- 代码如下:
-
#include<stdio.h> #include<stdlib.h> int main() { int arr[] = { 1,2,3,4,5,6,7,8,9,0 };//创建整形数组; int left = 0; int right = sizeof(arr) / sizeof(0) - 1;//数组元素个数=总字节/单字节-1; int key = 6; int mid = 0; while (left <= right) {//待查元素存在区间; mid = (left + right) / 2; if (arr[mid] > key) { right = mid - 1; } else if (arr[mid] < key) { left = mid + 1; } else break; } if (left <= right) printf("找到了,下标是%d\n", mid); else printf("找不到\n"); system("pause"); }
运行结果:
顺序查找法:
- 将数组中的数字从第一个元素开始,依次与需要朝赵的关键字比较。
- 若某个元素匹配关键字,则 查找成功,返回下标;
- ;若查找到最后一个元素还能找到关键字,则查找失败,返回-1;
- 。
-
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,0 }; int key ,i; printf("请输入你想查找的数:"); scanf("%d", &key); for (i = 0; i < 10; i++) { if (key == arr[i]) { printf("找到了,下标是%d", i); system("pause"); return 0; } }if (i = 10) { printf("%d", -1); } system("pause"); }
运行结果: