#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define max_num 100
#define SWAP(X, Y, TEMP) ((TEMP = X), (X = Y), (Y = TEMP))
int main(int argc, char *argv[])
{
int list[max_num];
int i, j, num, min, temp;
int mid, left = 0, right = 0, find_data, find_flag = -1;
printf("Please input number:");
scanf("%d", &num);
if (num < 0 || num > max_num) {
fprintf(stderr, "invalid data\n");
exit(1);
}
for (i = 0; i < num; i++) {
list[i] = rand() % 1000;
printf("%d ", list[i]);
}
printf("\n");
for (i = 0; i < num; i++) {
min = i;
for (j = i + 1; j < num; j ++) {
if (list[j] < list[min])
min = j;
}
SWAP(list[i], list[min], temp);
}
printf("After select sort result:\n");
for (i = 0; i < num; i ++)
printf("%d ", list[i]);
printf("\n");
printf("Please input find data:");
scanf("%d", &find_data);
right = num - 1;
while (left <= right) {
mid = (left + right) / 2;
if (list[mid] == find_data) {
find_flag = mid;
break;
} else if (list[mid] < find_data) {
left = mid + 1;
} else
right = mid - 1;
}
if (find_flag != -1) {
printf("Find data is sign: %d\n", find_flag);
}
}
折半查找法
最新推荐文章于 2024-11-22 22:17:59 发布