首页 > 代码库 > 冒泡、二分排序
冒泡、二分排序
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。
二分法如下:
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 }
冒泡、二分排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。