希尔排序是一种改进的插入排序算法,它通过比较相隔一定间隔的元素来工作,然后逐步缩小间隔。以下是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; }
请注意,希尔排序的关键是选择适当的间隔序列。上面的示例代码使用了初始间隔为数组长度的一半,然后逐步减半的策略。不同的间隔序列可能导致不同的性能表现。
香港2024生肖表 2025年新澳门正版免费2025年新澳门天天