冒泡法 #include <stdio.h> void main() { int a[] = { 9,1,4,3,8,5,6,7 }; int n = sizeof(a) / sizeof(int); int big_cir_times = n - 1; // 外层循环控制比较的趟数,n个数,就 n-1 趟 for (int i = 0; i < big_cir_times; i++) { /// 内层循环控制每趟中的交换的次数 for (int j = 0; j < big_cir_times-i; j++) { int k = j+1; if (a[j] > a[k]) { int temp = a[j]; a[j] = a[k]; a[k] = temp; } } } for (int i = 0; i < n; i++) { printf("%d", a[i]); } } 二分查找法 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> void main() { int a[] = { 1,2,3,4,5,6,7,8,9,10 }; int x; int high=sizeof(a)/sizeof(int), low=0, mid=(high+low)/2; //初始化数据 int flag = 0; // 标志位,找到或者没找到数据 printf("请输入想要查找的数据"); scanf("%d", &x); while (high>=low) { if (a[mid] == x) { flag = 1; break; } else if (a[mid] < x) { low = mid + 1; // 更新 low 的位置 mid = (high + low) / 2; //更新 mid 的位置 } else { high = mid - 1; //更新 high 的位置 mid = (high + low) / 2; // 更新 mid 的位置 } } if (flag==1) { printf("找到该数据,其索引为:%d", mid); } else { printf("数组中没有该数据"); } }