C语言白话数组数据查找

  • 遍历查找
  • 二分查找
    • 普通方式
  • 递归法

遍历查找

方法和名字一样就是逐个循环去查找数据,然后进行比较获得我们所需要的值。

#include<stdio.h>
main(){int a[10]={1,2,3,4,5,6,7,8,9,10},i,j=-1;int b=5;for(i=0;i<10;i++){  // 循环大小if(a[i]==b){  // 判断值printf("%d所对应的的值是%d",b,i);j=i;break;}}if(j==-1){  // 不存在输出printf("%d没有对应的值",b);}
}

上面是主函数写法
下面为函数写法

#include<stdio.h>
int traver(int a[],int len,int b){/** a[]:数组* len:数组的长度* b:需要确认的值 */int i,j=-1;for(i=1;i<len;i++){  //  循环len次if(a[i]==b){  // 判断大小printf("%d对应的值是%d",b,i);j=i;  // 设置台阶用于判断值是否存在break;  // 跳出此循环} }if(j==-1){  // 判断值是否存在printf("%d在数组中没有对应的值",b);}
}
main(){int a[10]={1,2,3,4,5,6,7,8,9,10},len=10,b=5;traver(a,len,b);
}


最后输出的结果

二分查找

二分查找的要求:

  • 有序数列

有序化方法:C语言白话数组排序 传送门

#include<stdio.h>
int array_sort2(int num[],int n){int i,j,t;for(i=0;i<n-1;i++){  // 循环n-1次for(j=0;j<n-i;j++){  // 嵌套循环if(num[j]>num[j+1]){  // 比较j和j+1位置上的数据大小// 成立就替换t=num[j];num[j]=num[j+1];num[j+1]=t;}}}
}
main(){int i,j,t,num[10],n=10,k;printf("输入10个待排序的数据\n");for(i=0;i<n;i++){scanf("%d",&num[i]); // 循环输入值}array_sort2(num,n);
}

通过上面的代码已经获得了顺序后的数据

普通方式

int dichotomy1(int num[],int n,int item){int low=0, high=n-1, mid=0;do{mid=(low+high) / 2;if (item > num[mid]){low = mid + 1;}else{high = mid - 1;}} while (high >= low && num[mid] != item);if (num[mid] == item){return mid;}else{return -1;}
}
main(){int i,j,t,num[10],n=10,k=6;printf("输入10个待排序的数据\n");for(i=0;i<n;i++){scanf("%d",&num[i]); // 循环输入值}array_sort2(num,n);printf("%d在排序后的位置是%d",k,dichotomy1(num,10,k));
}


这个是基础的,我们还可以使用递归法

递归法

int dichotomy2(int num[],int left,int right,int eval){/** num[]: 输入的数组* left: 起始下标* right: 结束下标* eval: 要查找的元素* return: 返回的数据是查找数据的位置,没有数据为-1*/int i;if(left>right)return -1;  // 查看下标位置是否正确i=(left+right)/2;if(num[i]==eval){  // 大小一致就输出位置return i; }else if(num[i]>eval){  // 比较小的那一边的数据return dichotomy2(num,left,i-1,eval);} else{  // 比较大的那一边的数据return dichotomy2(num,i+1,right,eval);}
}

就暂时到这里如果有什么问题可以留言,会及时处理。

C语言白话数组数据查找(遍历查找、二分查找)相关推荐

  1. c语言实验报告 折半查找法,C语言数组之冒泡排序+折半查找法(二分查找)

    冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...

  2. c语言 二分查找法 及二分查找法的时间复杂度。

    二分查找法是用来查找数组中指定的那个元素.使用二分查找的前提是数组是有序的.(这里我们假设是升序) 在现实生活中,我们要猜一个区间内的数字,比如1~10之间,我们通常会猜它的中间数5,再根据要猜的数和 ...

  3. [Golang]力扣Leetcode - 852. 山脉数组的峰顶索引(二分查找)

    [Golang]力扣Leetcode - 852. 山脉数组的峰顶索引(二分查找) 题目:符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 < ...

  4. 二分查找的平均查找长度_二分查找

    1.什么是二分查找 数据的查找在计算机的操作中非常常见,那么我们应该怎样在计算机中实现查找操作呢? 最简单的一种方法:"傻找",也就是一个一个的找,我们把数组中的每个元素都和我们想 ...

  5. 查找算法:二分查找、顺序查找

    08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活.此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/de ...

  6. php+求二分查找递归算法,PHP二分查找(递归和循环)

    二分查找可以通过递归和循环来实现, 思路如下: 将要查找的数和中间数进行比较, 如果相等,则表示找到,返回下标 如果要查找的数小于中间这个数,则说明要查找的数分布在数组左边,修改right边界,使其等 ...

  7. 剑指Offer #06 旋转数组的最小数字(二分查找)| 图文详解

    题目来源:牛客网-剑指Offer专题 题目地址:旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小 ...

  8. c语言指针的折半法查找,数据结构笔记7:折半查找法(二分查找法)及C语言实现...

    折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高.但是该算法的使用的前提是静态查找表中的数据必须是有序的. 折半查找算法 对静态查找表{5,13,19,21,37,56, ...

  9. leetcode 852. 山脉数组的峰顶索引(二分查找)

    题目 符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 < i < arr.length - 1)使得: arr[0] < arr[ ...

最新文章

  1. PyTorch中的MIT ADE20K数据集的语义分割
  2. 【青少年编程】绘制五角星
  3. 学习string,stringBuffer时遇到的问题
  4. Python之实现一个简易计算器
  5. Nacos深入浅出(三)
  6. java整属取余数_js取整数、取余数的方法
  7. aarch64(ARMv8)交叉编译环境下载
  8. python 数据分析 实际案例_python在实际工作中运用的案例
  9. #10 Linux硬盘管理
  10. Unity搭建简单的图片服务器
  11. KOFLive Beta Daily-Scrum 2
  12. 关于MSDTC - 与基础事务管理器的通信失败 错误解决的小备忘
  13. python elasticsearch dsl_python 查询 elasticsearch 常用方法(Query DSL)
  14. npm命令启动前端项目
  15. C语言课程设计——25道蓝桥杯练习题
  16. 中小企业物流配送管理系统SSM开发MYSQL数据库javaweb项目j2ee实现
  17. 软件测试系统主要包括哪几项内容,系统测试包含哪几部分?
  18. 页眉怎样从特定的一页开始以及word页眉页脚第几页共几页格式设置
  19. [Windows]笔记本触摸板手势突然不起作用的解决办法
  20. 按键截屏功能源码流程讲解

热门文章

  1. 【互联网安全】移动APP漏洞风险与解决方案
  2. 利用python进行体重指数计算
  3. python 基础知识之(numpy、pandas、matplotlib、tensorflow)
  4. 通达信接口的登录调试步骤
  5. 为公司高管履职风险买单的董监高责任保险DO
  6. Linux学习:Linux 的文件权限与目录配置
  7. 关于序列化不成功的bug处理
  8. i春秋WEB CTF 1
  9. SqlServer查看锁表与解锁
  10. 最新Google 15道古怪面试题