当前位置:首页C语言 > 正文

c语言排序从大到小

作者:野牛程序员:2024-12-21 22:09:03C语言阅读 2298
c语言排序从大到小

在 C 语言中,可以使用 qsort() 函数或自定义排序算法(如冒泡排序、选择排序、插入排序等)来实现从大到小的排序。以下是几种方法的示例:

1. 使用 qsort() 函数

#include <stdio.h>
#include <stdlib.h>

// 比较函数,用于从大到小排序
int compare(const void *a, const void *b) {
    return (*(int*)b - *(int*)a);  // 从大到小排序
}

int main() {
    int arr[] = {9, 3, 7, 5, 2, 6, 4};
    int n = sizeof(arr) / sizeof(arr[0]);
    
    // 使用 qsort 排序
    qsort(arr, n, sizeof(int), compare);
    
    // 输出排序结果
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    
    return 0;
}

2. 使用冒泡排序

#include <stdio.h>

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] < arr[j + 1]) {  // 从大到小排序
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

int main() {
    int arr[] = {9, 3, 7, 5, 2, 6, 4};
    int n = sizeof(arr) / sizeof(arr[0]);
    
    bubbleSort(arr, n);
    
    // 输出排序结果
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    
    return 0;
}

3. 使用选择排序

#include <stdio.h>

void selectionSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        int maxIndex = i;
        for (int j = i + 1; j < n; j++) {
            if (arr[j] > arr[maxIndex]) {  // 从大到小排序
                maxIndex = j;
            }
        }
        
        // 交换最大值到当前位置
        int temp = arr[maxIndex];
        arr[maxIndex] = arr[i];
        arr[i] = temp;
    }
}

int main() {
    int arr[] = {9, 3, 7, 5, 2, 6, 4};
    int n = sizeof(arr) / sizeof(arr[0]);
    
    selectionSort(arr, n);
    
    // 输出排序结果
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    
    return 0;
}

4. 使用插入排序

#include <stdio.h>

void insertionSort(int arr[], int n) {
    for (int i = 1; i < n; i++) {
        int key = arr[i];
        int j = i - 1;
        
        // 将比 key 小的元素移到右边
        while (j >= 0 && arr[j] < key) {  // 从大到小排序
            arr[j + 1] = arr[j];
            j--;
        }
        
        arr[j + 1] = key;
    }
}

int main() {
    int arr[] = {9, 3, 7, 5, 2, 6, 4};
    int n = sizeof(arr) / sizeof(arr[0]);
    
    insertionSort(arr, n);
    
    // 输出排序结果
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    
    return 0;
}
  1. 使用 qsort() 时,只需要提供比较函数即可。

  2. 冒泡排序、选择排序和插入排序都是常见的排序算法,可以根据需求选择合适的算法。

对于小规模的数据,任何一种排序算法都可以使用,但对于大规模数据,qsort()(基于快速排序)通常表现更好。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • c语言排序从大到小
  • 相关推荐

    最新推荐

    热门点击