用c语言实现折半查找函数

#include <stdio.h>
#include <stdlib.h>
int binsearch(int x, int arr[], int left, int right)
{
while (left <= right)
{
int mid = (left+right)/2;
if (arr[mid] == x)
{
return mid;
}
else if (arr[mid] < x)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
return -1;
}
int main()
{
int arr[] = { 2, 6, 20, 66, 177, 199, 600 };
int n;
scanf("%d",&n);
int ret = binsearch(n, arr, 0, sizeof(arr) / sizeof(arr[0] - 1));
if (ret != -1)
{
printf("%d\n", arr[ret]);
}
else
{
printf("not exist\n");
}
system("pause");
return 0;
}
时间: 2024-12-19 21:33:18

用c语言实现折半查找函数的相关文章

c语言:编写折半查找函数

编写折半查找函数 程序: #include <stdio.h> int binsearch(int x, int arr[], int len)//binsearch 折半,对分 { int left = 0; int right = len - 1; while (left <= right) { int mid = left + (right - left) / 2; if (arr[mid] < x) { left = mid + 1; } else if (arr[mid]

折半查找函数

折半查找 二分查找又称折半查找 优点:比较次数少,查找速度快,平均性能好: 缺点:要求待查表为有序表,且插入删除困难. 因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功:否则利用中间位置记录将表分成前.后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表.重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功. #i

C语言:折半查找

//折半查找 #include <stdio.h> int dichotomy(int m,int arr[],int left,int right) {  int mid;  while(left <= right)  {   mid = left - (left - right)/2;   if(m < mid)    right = mid - 1;   else if(m > mid)    left = mid + 1;   else    return mid;

C语言:编写折半查找函数,即二分法

#include<stdio.h>#include <stdlib.h>int main(){     int ret=0;     int arr[]={1,2,5,6,88,99,456,666};     ret= binsearch(666,arr,0,sizeof(arr) / sizeof(arr[0])-1);    if(ret!=-1)   {       printf("%d",ret);      }   else   {      pri

编程成长日记——折半查找

编写一个折半查找函数 #include<stdio.h> //编写折半查找函数 int binsearch(int a,int num[],int b ) { int left=0,right=b-1,mid=0; while(left<=right) {    int mid=(left+right)/2;  if (num[mid]<a) { left=left+1; } else if (num[mid]==a) { return mid; } else { right=mi

C语言之实现函数返回一个数组,以及选择排序,还有折半查找。这是同学的一个作业。。。

作业的具体要求如下: 编写一个完整的程序,实现如下功能.(1)    输入10个无序的整数.(2)    用选择排序法将以上接收的10个无序整数按从大到小的顺序排序.(3)    要求任意输入一个整数,用折半查找法从排好序的10个数中找出该数,若存在,在主函数中输出其所处的位置,否则,提示未找到.提示:可定义input函数完成10个整数的输入,sort函数完成输入数的排序,search函数完成输入数的査找功能. 下面是具体代码:(本人懒,没写注释,不过仔细看代码,还是很简单的) 1 #inclu

再次找的一些C语言题目,关于折半查找和某些种种

首先我们来解释一下折半查找: 1.对一组具有升序(降序)的序列取其中间值,啪一刀斩断, 2.然后就进行比较啦,如果比较等于中间值,返回不解释. 3.如果小于中间值,就将查找范围变成右(左)边. 4.如果大于中间值,就将查找范围变成左(右)边. 5.一直到左边参数大于右边为止咯: ////查找数值 #include <stdio.h> void swap(int v[],int a, int b) {              int temp;             temp = v[a];

C语言数组之冒泡排序+折半查找法(二分查找)

冒泡排序算法 1 int num[5]; 2 int i; 3 //循环接收用户输入的元素 4 for(i=0;i<5;i++){ 5 printf("请输入第%d个元素\n",i+1); 6 scanf("%d",&num[i]); 7 } 8 for(i=0;i<4;i++){ //外层循环,控制排序的轮数 9 int j; 10 for(j=0;j<4-i;j++){ //内层循环,控制冒牌排序每轮的次数 11 if(num[j]&g

C语言程序设计100例之(21):折半查找

例21  折半查找 问题描述 顺序查找是一种最简单和最基本的检索方法.其基本思想是:从检索表的一端(如表中第一个记录或最后一个记录)开始,逐个进行记录的关键字和给定值的比较.若某个记录的关键字和给定值比较相等,则查找成功:否则,若直至检索表的另一端(如最后一个记录或第一个记录),其关键字和给定值比较都不等,则表明表中没有待查记录,查找不成功. 顺序查找可以写成一个简单的一重循环,循环中依次将检索表(不妨设为数组a)中的元素与给定值比较,若相等,用break退出循环.算法描述为: for (i=0