用C语言输出代码,编写一个进行希尔排序的小程序。原始数组:array[] = { 7, 9, 2, 4, 1, 0, 1, 6, 12, 10 } 输出:0 1 1 2 4 6 7 9 10 12
时间: 2024-12-18 18:29:23 浏览: 4
在C语言中,希尔排序(Shell Sort)是一种改进的插入排序算法,通过将待排序的元素按照一定增量分组再排序,最后逐步减小增量直至为1,整个过程类似打牌理序。以下是使用C语言实现希尔排序的一个简单示例,对于给定的数组`{ 7, 9, 2, 4, 1, 0, 1, 6, 12, 10 }`:
```c
#include <stdio.h>
// 希尔排序函数
void shellSort(int arr[], int n) {
// 设置步长序列,这里采用经典的Hibbard序列
int gap = n / 2;
while (gap > 0) {
for (int i = gap; i < n; i++) {
int temp = arr[i];
int j;
// 使用插入排序处理每个间隔内的元素
for (j = i; j >= gap && arr[j - gap] > temp; j -= gap)
arr[j] = arr[j - gap];
// 将当前元素放入其最终位置
arr[j] = temp;
}
// 缩小步长到原来的一半
gap /= 2;
}
}
int main() {
int array[] = { 7, 9, 2, 4, 1, 0, 1, 6, 12, 10 };
int n = sizeof(array) / sizeof(array[0]);
printf("Before sorting: ");
for (int i = 0; i < n; i++)
printf("%d ", array[i]);
shellSort(array, n);
printf("\nAfter sorting: ");
for (int i = 0; i < n; i++)
printf("%d ", array[i]);
return 0;
}
```
当你运行这个程序,它会先显示原始数组,然后输出经过希尔排序后的数组。注意实际输出可能会因计算机性能而略有差异,但数组应该会按照升序排列。
阅读全文