您的位置:首页 > 编程语言 > C语言/C++

【C语言-23】如何在整型有序数组中查找想要的数字,(内含二分查找法),

2019-04-07 15:45 302 查看

  

二分查找法:

 

  1. 二分查找也称折半查找,它是一种效率较高的查找方法。
  2. 但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列.
  3. 代码如下:
  4.  
  5. [code]#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. 将数组中的数字从第一个元素开始,依次与需要朝赵的关键字比较。
  2. 若某个元素匹配关键字,则 查找成功,返回下标;
  3. ;若查找到最后一个元素还能找到关键字,则查找失败,返回-1;
  4. [code]
    #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");
    
    }

    运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐