c语言:下面的程序逐个读入数组a的元素,用二分插入法,使a的元素由小到大排列。即读入第i(i=2,3,…,n)个元素时,先用二分查找法,在a[0]与a[i-1](当前已有序)之间找到它应插入的位置,将其插入。
时间: 2024-02-12 17:09:12 浏览: 58
下面是使用C语言实现二分插入排序的程序:
```c
#include <stdio.h>
void binaryInsertionSort(int a[], int n) {
int i, j, left, right, middle, temp;
for (i = 1; i < n; i++) {
temp = a[i];
left = 0;
right = i - 1;
while (left <= right) {
middle = (left + right) / 2;
if (temp < a[middle]) {
right = middle - 1;
} else {
left = middle + 1;
}
}
for (j = i - 1; j >= left; j--) {
a[j + 1] = a[j];
}
a[left] = temp;
}
}
int main() {
int a[10] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
int n = 10;
binaryInsertionSort(a, n);
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}
```
这个程序首先定义了一个名为`binaryInsertionSort`的函数,该函数接受一个整数数组和数组长度作为参数,然后使用二分插入排序算法对数组进行排序。在主函数中,我们创建一个长度为10的整数数组,并将其初始化为一些随机值。然后,我们调用`binaryInsertionSort`函数来对该数组进行排序,并输出排序后的结果。
阅读全文