由于题目没有给出具体的数据,以下程序仅供参考。

  1. 希尔排序法
#include <stdio.h>

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

int main() {
    int a[] = {5, 3, 8, 6, 4};
    int n = sizeof(a) / sizeof(int);
    shell_sort(a, n);
    for (int i = 0; i < n; i++) {
        printf("%d ", a[i]);
    }
    return 0;
}
  1. 快速排序算法
#include <stdio.h>

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

int main() {
    int a[] = {5, 3, 8, 6, 4};
    int n = sizeof(a) / sizeof(int);
    quick_sort(a, 0, n - 1);
    for (int i = 0; i < n; i++) {
        printf("%d ", a[i]);
    }
    return 0;
}
  1. 堆排序算法
#include <stdio.h>

void adjust_heap(int a[], int i, int n) {
    int j = 2 * i + 1;
    int temp = a[i];
    while (j < n) {
        if (j + 1 < n && a[j] < a[j + 1]) {
            j++;
        }
        if (temp >= a[j]) {
            break;
        }
        a[i] = a[j];
        i = j;
        j = 2 * i + 1;
    }
    a[i] = temp;
}

void heap_sort(int a[], int n) {
    for (int i = n / 2 - 1; i >= 0; i--) {
        adjust_heap(a, i, n);
    }
    for (int i = n - 1; i > 0; i--) {
        int temp = a[0];
        a[0] = a[i];
        a[i] = temp;
        adjust_heap(a, 0, i);
    }
}

int main() {
    int a[] = {5, 3, 8, 6, 4};
    int n = sizeof(a) / sizeof(int);
    heap_sort(a, n);
    for (int i = 0; i < n; i++) {
        printf("%d ", a[i]);
    }
    return 0;
}
C语言排序算法实现:希尔排序、快速排序和堆排序

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

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