#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); } }
原文:http://blog.csdn.net/chenliang0224/article/details/18995189