c语言中怎么判断数组中的字母,C语言 判断一个数是否是数组中的成员 用C语言编程...

本文介绍了一种优化查找算法,通过引入二分查找法对已排序的数组进行高效定位。作者首先介绍了基础的查找函数findelem()和冒泡排序sort(),然后展示了如何利用二分查找对查找函数进行改进,以提高在大规模数据中的查找效率。
摘要由CSDN通过智能技术生成

findelem()就是查找函数,查找输入的参数x在数组array的位置,函数返回元素在array中的单元下标sort()是排序函数,用冒泡排序的方法将数组array从小到大排序算法思路:(1)输入数组(2)对数组进行排序(3)调用findelem()进行查找,若查找元素比数组单元的值大则判断下一单元,直到x大于等于当前数组单元的值,则该单元的下标就是函数的返回值#include<stdio.h>#defineLEN5intfindelem(intelem);intmain(){inti;intx;intpos;intarray[LEN]={0};printf("请输入数组:");for(i=0;i<=LEN-1;i++)scanf("%d",&array[i]);printf("请输入要查找的数:");scanf("%d",&x);sort(array);pos=findelem(x,array);printf("%d在数组的位置为:%d\n",x,pos);return0;}voidsort(int*parray){inti,j,tmp;for(i=1;i<=LEN-1;i++)for(j=0;j<=LEN-i-1;j++){if(parray[j]>parray[j+1]){tmp=parray[j];parray[j]=parray[j+1];parray[j+1]=tmp;}}}intfindelem(intelem,int*parray){inti;for(i=0;i<=LEN-1;i++){if(parray[i]>=elem){return(i);break;}}if(i>=LEN)return(i);}和其他人的一样,查找函数可以用二分查找进行优化,下面是二分查找算法写的函数,没有实际运行过,如果有问题欢迎追问intfindelem(intelem,int*parray){intmid,upper,lower;upper=LEN;lower=1;mid=(upper+lower)/2;while(1){if(elem==parray[mid])return(mid);if(elem==parray[mid-1])return(mid-1);if(elem>parray[mid-1]&&elem<parray[mid])return(mid);if(elem<parray[mid-1])//若elem比parray[mid-1],则elem必定在数组mid-1的前面部分{upper=mid-2;//重新设置查找的上届mid=(upper+lower)/2;}//重新求新的中间位置if(elem>parray[mid])//若elem比parray[mid],则elem必定在数组mid的后面部分{lower=mid+1;/重新设置查找的下届mid=(upper+lower)/2;}//重新求新的中间位置}}

阅读全文 >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值