C语言学习记录——鹏哥二分法查找数组中元素 复习整理

简介: C语言学习记录——鹏哥二分法查找数组中元素 复习整理
#include <stdio.h>
#include <string.h>
int main()
{
    //初始化一维整型数组
 
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
 
    //随机设定一个要寻找的数
 
    int aim = 9;
 
    //用整个数组的占用空间大小 / 数组中一个元素的占用空间大小
    //得到数组中的元素个数sz,定义两个变量存储初始左下标和右下标
 
    int sz = sizeof(arr) / sizeof(arr[0]);
    int left = 0;
    int right = sz - 1 ;
   
    //开始采用二分法在数组中查找目标数aim
 
    while (left <= right)
    { 
        //定义变量subscript,使得从最中间的位置开始查找
        //如不满足条件,则排除了一半的非目标元素
        //继续取剩余疑似目标的最中间值来对比寻找
        //直到左下标与右下标重合或交错,结束循环
 
        int subscript = (left + right) / 2;
        if (arr[subscript] < aim)
        {
            left = subscript + 1;
        }
        else if (arr[subscript] > aim)
        {
            right = subscript - 1;
        }
        else
        {
            printf("找到了,下标是:%d\n", subscript);
            break;
            //找到元素之后跳出循环
        }
       
    }
 
    //左下标大于右下标,说明数组中没有目标元素
    if (left > right)
        printf("找不到\n");
 
    return 0;
}

 

目录
相关文章
TU^
|
4天前
|
存储 编译器 程序员
C语言之数组
C语言之数组
TU^
11 1
|
4天前
|
存储 程序员 编译器
【C语言基础】:数组
【C语言基础】:数组
|
12天前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
12 1
|
12天前
|
存储 算法 安全
数据结构学习记录——图应用实例-拯救007(问题描述、解题思路、伪代码解读、C语言算法实现)
数据结构学习记录——图应用实例-拯救007(问题描述、解题思路、伪代码解读、C语言算法实现)
10 0
|
12天前
|
程序员 C语言 C++
C语言学习记录——动态内存习题(经典的笔试题)、C/C++中程序内存区域划分
C语言学习记录——动态内存习题(经典的笔试题)、C/C++中程序内存区域划分
10 0
|
12天前
|
C语言
C语言学习记录——动态内存开辟常见的错误
C语言学习记录——动态内存开辟常见的错误
10 1
|
5天前
|
算法 Unix Linux
C语言随机数的产生(rand、srand、time函数细节讲解)
C语言随机数的产生(rand、srand、time函数细节讲解)
|
3天前
|
安全 C语言
【C语言基础】:内存操作函数
【C语言基础】:内存操作函数
|
4天前
|
编译器 C语言 C++
【C语言基础】:字符函数和字符串函数-2
【C语言基础】:字符函数和字符串函数