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] == x)

{

return mid;

}

else

{

right = mid - 1;

}

return -1;

}

}

int main()

{

int arr[] = { 1, 21, 33, 46, 5, 62, 70, 81, 99, 10 };

int num = 0;

int sz = sizeof(arr) / sizeof(arr[0]);

printf("请输入一个数:");

scanf("%d", &num);

int ret = binsearch(num, arr, sz);

if (ret == -1)

{

printf("not exist\n");

}

else

{

printf("数的位置:%d\n", ret + 1);

}

return 0;

}

结果一:

请输入一个数:81

数的位置:8

请按任意键继续. . .

结果二:

请输入一个数:83

not exist

请按任意键继续. . .

时间: 2024-12-18 16:02:51

c语言:编写折半查找函数的相关文章

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

用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 = 

【原创】用第三方语言编写PostgreSQL 存储函数

在PostgreSQL里,所有的存储函数需求都可以用PLPGSQL来实现.同时也支持用第三方语言来编写,这个就得看自己哪个方面熟练了.不过要注意的一点是 PLPGSQL的效率怎么着都比其他第三方语言来的高效.比如,简单的插入表的存储函数: CREATE OR REPLACE FUNCTION ytt.insert_plpgsql(f_num integer) RETURNS void LANGUAGE plpgsql AS $ytt$ declare i int := 0; v_rank int

用第三方语言编写PostgreSQL 存储函数

在PostgreSQL里,所有的存储函数需求都可以用PLPGSQL来实现.同时也支持用第三方语言来编写,这个就得看自己哪个方面熟练了.不过要注意的一点是 PLPGSQL的效率怎么着都比其他第三方语言来的高效.比如,简单的插入表的存储函数: CREATE OR REPLACE FUNCTION ytt.insert_plpgsql(f_num integer) RETURNS void LANGUAGE plpgsql AS $ytt$ declare i int := 0; v_rank int

折半查找函数

折半查找 二分查找又称折半查找 优点:比较次数少,查找速度快,平均性能好: 缺点:要求待查表为有序表,且插入删除困难. 因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功:否则利用中间位置记录将表分成前.后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表.重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功. #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语言 编写字符串操作函数strrchr,在字符串中查找目标字符最后一次出现的位置,返回指向这次位置的指针。

#include<stdio.h> #include<string.h> const char *my_strrchr(char const *str,int ch) { int i=0,len=0; len=strlen(str); for(i=len-1;i>=0;i--) { if(str[i]==ch) { return str+i; } } return NULL; } int main() { char ch='c'; char src[]="abcde

用c语言编写二分查找法

二分法的适用范围为有序数列,这方面很有局限性. #include<stdio.h> //二分查找法 void binary_search(int a[],int start,int mid,int end); int main() { int iLength,istars,i,iTimes,iNumber,n; int a[100]; printf("please enter the length of the array:\n "); scanf("%d&quo

再次编写折半查找程序

看了看以前写的程序,觉得应该再写一次. #include<stdio.h> #include<string.h> char* find(char *left, char *right,int len) { char k; char *mid= left + len / 2; printf("k="); scanf("%c", &k); while ((*mid != *left) && (*mid!=*right))