#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);
}
}

折半查找法_#define