希尔排序带详细注释

以下是使用C语言实现希尔排序的代码示例,注释详细解释了每一步的逻辑:#include

void shellSort(int arr[], int n) {
    // 初始化间隔为数组长度的一半
    int gap = n / 2;

    while (gap > 0) {
        // 对每个间隔进行插入排序
        for (int i = gap; i < n; i++) {
            int temp = arr[i];
            int j = i;

            // 在间隔为 gap 的元素中进行插入排序
            while (j >= gap && arr[j - gap] > temp) {
                arr[j] = arr[j - gap];
                j -= gap;
            }

            arr[j] = temp;
        }

        // 缩小间隔
        gap = gap / 2;
    }
}

int main() {
    int arr[] = {9, 5, 2, 7, 1, 3};
    int n = sizeof(arr) / sizeof(arr[0]);

    printf("原始数组:");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    shellSort(arr, n);

    printf("排序后数组:");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}这段代码实现了希尔排序算法。在希尔排序中,数组被分为多个子数组,并对每个子数组进行插入排序。每次排序后,子数组的大小(间隔)都会逐渐缩小,直到间隔为1(普通插入排序),完成排序。以上代码演示了对一个整数数组进行希尔排序的过程,并输出排序后的结果。

你可能感兴趣的:(C语言数据结构,笔记,考研数据结构,数据结构,算法,经验分享,其他,排序算法)