以下为C语言实现希尔排序、快速排序和堆排序的示例代码:

希尔排序:

void shellSort(int arr[], int n) {
    int gap, i, j, temp;
    for (gap = n / 2; gap > 0; gap /= 2) {
        for (i = gap; i < n; i++) {
            temp = arr[i];
            for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {
                arr[j] = arr[j - gap];
            }
            arr[j] = temp;
        }
    }
}

快速排序:

void quickSort(int arr[], int left, int right) {
    int i, j, tmp, pivot;
    if (left < right) {
        pivot = left;
        i = left;
        j = right;
        while (i < j) {
            while (arr[i] <= arr[pivot] && i < right) {
                i++;
            }
            while (arr[j] > arr[pivot]) {
                j--;
            }
            if (i < j) {
                tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
        }
        tmp = arr[pivot];
        arr[pivot] = arr[j];
        arr[j] = tmp;
        quickSort(arr, left, j - 1);
        quickSort(arr, j + 1, right);
    }
}

堆排序:

void heapify(int arr[], int n, int i) {
    int largest = i;
    int l = 2 * i + 1;
    int r = 2 * i + 2;

    if (l < n && arr[l] > arr[largest]) {
        largest = l;
    }
    if (r < n && arr[r] > arr[largest]) {
        largest = r;
    }
    if (largest != i) {
        int temp = arr[i];
        arr[i] = arr[largest];
        arr[largest] = temp;
        heapify(arr, n, largest);
    }
}

void heapSort(int arr[], int n) {
    for (int i = n / 2 - 1; i >= 0; i--) {
        heapify(arr, n, i);
    }
    for (int i = n - 1; i >= 0; i--) {
        int temp = arr[0];
        arr[0] = arr[i];
        arr[i] = temp;
        heapify(arr, i, 0);
    }
}
C语言排序算法实现:希尔排序、快速排序、堆排序

原文地址: https://www.cveoy.top/t/topic/oSeg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录