加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C语言算法- 插补搜寻法

发布时间:2020-12-16 07:46:05 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #include stdio.h#include stdlib.h#include time.h#define MAX 10#define SWAP(x,y) {int t; t = x; x = y; y = t;}void quicksort(int[],int,int);i

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
#define SWAP(x,y) {int t; t = x; x = y; y = t;}
void quicksort(int[],int,int);
int intsrch(int[],int);
int main(void)
{
  int number[MAX] =
  {
    0
  };
  int i,find;
  srand(time(NULL));
  for (i = 0; i < MAX; i++)
  {
    number[i] = rand() % 100;
  }
  quicksort(number,MAX - 1);
  printf("数列:");
  for (i = 0; i < MAX; i++)
    printf("%d ",number[i]);
  printf("n输入寻找对象:");
  scanf("%d",&find);
  if ((i = intsrch(number,find)) >= 0)
    printf("找到数字于索引%d ",i);
  else
    printf("n找不到指定数");
  printf("n");
  return 0;
}
 
int intsrch(int number[],int find)
{
  int low,mid,upper;
  low = 0;
  upper = MAX - 1;
  while (low <= upper)
  {
    mid = (upper - low) *(find - number[low]) / (number[upper] - number[low]) +
      low;
    if (mid < low || mid > upper)
      return  - 1;
    if (find < number[mid])
      upper = mid - 1;
    else if (find > number[mid])
      low = mid + 1;
    else
      return mid;
  }
  return  - 1;
}
 
void quicksort(int number[],int left,int right)
{
  int i,j,k,s;
  if (left < right)
  {
    s = number[(left + right) / 2];
    i = left - 1;
    j = right + 1;
    while (1)
    {
      while (number[++i] < s)
        ;
      // 向右找
      while (number[--j] > s)
        ;
      // 向左找
      if (i >= j)
        break;
      SWAP(number[i],number[j]);
    }
    quicksort(number,left,i - 1); // 对左边进行递回
    quicksort(number,j + 1,right); // 对右边进行递回
  }
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读