1 #include<stdio.h> 2 3 void main() 4 { 5 int a[10] = {0}; 6 int i,j,t; 7 printf("input 10 numbers:\n"); 8 for (i = 0; i < 10; i++) { 9 scanf("%d", &a[i]); 10 } 11 printf("\n"); 12 13 for (j = 0; j < 9; j++) { 14 for (i = 0; i < 9 - j; i++) { 15 if (a[i] > a[i+1]) { 16 t = a[i]; 17 a[i] = a[i+1]; 18 a[i+1] = t; 19 } 20 } 21 } 22 printf("The sorted numbers are:\n"); 23 for (i = 0; i < 10; i++) { 24 printf("%d ", a[i]); 25 } 26 printf("\n"); 27 }
以上是冒泡排序,前提沒有要求,測試的數據能夠無序。測試
而二分法通常要求測試數據先排好序,通常是用於插入或查找一個數據。最後若是出現low > high就Over。spa
二分法以下:code
1 #include<stdio.h> 2 3 int main() 4 { 5 int a[10] = {-12, 0, 6, 16, 23, 56, 80, 100, 110, 115}; 6 int n, low, high, mid, found; 7 low = 0; 8 high = 9; 9 found = 0; 10 printf("Input a number to be searched:"); 11 scanf("%d", &n); 12 13 while (low <= high) { 14 mid = (low + high)/2; 15 if (n == a[mid]) { 16 found = 1; 17 break; 18 } 19 else if (n > a[mid]) { 20 low = mid + 1; 21 } 22 else { 23 high = mid - 1; 24 } 25 } 26 27 if (1 == found) { 28 printf("The index of %d is %d\n", n, mid); 29 } 30 else { 31 printf("There's no %d\n", n); 32 } 33 34 return 0; 35 }