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】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |