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
   {
      printf("not exist"); 
   }
 return 0;
}

int binsearch(int x,int arr[],int left,int right)
  {
       while(left<=right) 
      {
            int mid=left-(left-right)/2;
         if(x<arr[mid])
     {
          right=mid-1; 
    }
         else if(x>arr[mid])
      {
           left=mid+1; 
      }
          else
      {
           return arr[mid];
      }
 }
 return -1;
}

时间: 2024-10-09 06:49:04

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]

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