c语言希尔排序
作者:野牛程序员:2024-01-03 21:30:12C语言阅读 2668
希尔排序是一种改进的插入排序算法,它通过比较相隔一定间隔的元素来工作,然后逐步缩小间隔。以下是C语言的希尔排序示例代码:
#include <stdio.h>
void shellSort(int arr[], int n) {
// 初始间隔设定为数组长度的一半
for (int gap = n / 2; gap > 0; gap /= 2) {
// 在每个间隔内应用插入排序
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;
}
}
}
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\\n");
}
int main() {
int arr[] = {12, 34, 54, 2, 3};
int n = sizeof(arr) / sizeof(arr[0]);
printf("原始数组:\\n");
printArray(arr, n);
// 应用希尔排序
shellSort(arr, n);
printf("\\n排序后的数组:\\n");
printArray(arr, n);
return 0;
}请注意,希尔排序的关键是选择适当的间隔序列。上面的示例代码使用了初始间隔为数组长度的一半,然后逐步减半的策略。不同的间隔序列可能导致不同的性能表现。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:c语言数据结构顺序表和链表
- 下一篇:c语言堆排序
