用C语言 写一个二分法大小排序
时间: 2023-12-29 07:49:10 浏览: 80
以下是一个使用二分法实现的排序程序:
```c
#include <stdio.h>
void binary_sort(int a[], int n) {
int i, j, low, high, mid, temp;
for (i = 1; i < n; i++) {
low = 0;
high = i - 1;
temp = a[i];
while (low <= high) {
mid = (low + high) / 2;
if (a[mid] > temp) {
high = mid - 1;
} else {
low = mid + 1;
}
}
for (j = i - 1; j >= low; j--) {
a[j + 1] = a[j];
}
a[low] = temp;
}
}
int main() {
int a[10] = {9, 1, 5, 8, 3, 7, 6, 2, 4, 0};
int i;
printf("Original array:\n");
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
binary_sort(a, 10);
printf("Sorted array:\n");
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
该程序首先定义了一个 `binary_sort` 函数,接受一个整数数组 `a` 和数组大小 `n` 作为参数。在函数中,使用了一个外层循环来遍历整个数组,内层循环使用二分法查找当前元素应该插入的位置。最后,使用一个 `for` 循环将元素插入到对应位置。
在 `main` 函数中,定义了一个初始数组,使用 `printf` 函数输出原始数组和排序后的数组。
阅读全文