#include <stdio.h>
#define RANGE 15
int get_min_id(int * x, int range)
{
int i = 0, j = 0, m = 99999999L;
for(i = 0; i < range; i++) {
if (x[i] < m) {
m = x[i];
j = i;
}
}
return j;
}
void sort(int x[RANGE])
{
int i = 0, j = 0, r = 0, t = 0; int * y = 0;
for(i = 0; i < RANGE; i++) {
y = (int *)x + i + 1;
r = RANGE - i;
j = get_min_id(y, r) + i + 1;
if (x[j] < x[i]) {
t = x[i];
x[i] = x[j];
x[j] = t;
}
}
}
int search(int x[RANGE], int y)
{
int nStart=0,nEnd=RANGE-1,nMiddle,nFound=0;
while(nStart<=nEnd)
{
nMiddle=(nStart+nEnd)/2;
if(x[nMiddle]==y)
return nMiddle;
else
if(x[nMiddle]>y)
nEnd=nMiddle-1;
else
nStart=nMiddle+1;
}
return -1;
}
int main(void)
{
int x[RANGE], y = 0, i = 0;
printf("请输入%d个整数:", RANGE);
for(i = 0; i< RANGE; i++) scanf("%d", x + i);
sort(x);
printf("排序后为:\n");
for(i = 0; i < RANGE; i++) printf("%d\t", x[i]);
printf("\n请输入要搜索的整数:");
scanf("%d", &y);
i = search(x, y);
if (i < 0)
printf("无此数\n");
else
printf("这是数组中的第%d个元素\n", i+1);
return 0;
}
温馨提示:答案为网友推荐,仅供参考