一个15数据以内的排序搜索程序
#include<stdio.h>
int max(int a[],int len);
int reach(int a[],x,int len);
int main(){
const int u = 15;
int k;
int a[15];
for (k = 0; k < u; k++) {
a[k] = 0;
}
int z;
printf("请输入大小在15之内你想要的数据组");
for (z = 0; z < u; z++) {
int h;
int o = 0;
scanf("%d", &h);
o+=1;
a[z] = h;
}
printf("请输入查找的数据");
int x;
scanf("%d", &x);
int len = sizeof(a) / sizeof(a[0]);
int i;
for (i = len-1;i>0; i--) {
int maxid = max(a, i + 1);
int t = a[maxid];
a[maxid] = a[i];
a[i] = t;
}
printf("你的数据有序后为;");
for (i = 0; i < len; i++) {
printf("%d ", a[i]);
}
printf("\n");
int w = reach(a, x, len);
if (w == -1) {
printf("不存在");
}
else { printf("%d在%d的位置上",x,w+1); }
return 0;
}
int max(int a[], int len) {
int maxid = 0;
int i;
for (i = 1; i < len; i++) {
if (a[maxid] < a[i])
{
maxid = i;
}
}
return maxid;
}
int reach(int a[], int x, int len) {
int cnt = -1;
int left = 0;
int right = len - 1;
while (right > left) {
int mid = (right + left) / 2;
if (a[mid] == x) {
cnt = mid;
break;
}
else if (a[mid] > x) {
right = mid - 1;
}
else {
left = mid + 1;
}
}
return cnt;
}