溫馨提示×

如何自定義qsort的比較函數(shù)

小樊
81
2024-10-16 07:25:02
欄目: 編程語言

在C語言中,qsort函數(shù)是用于對數(shù)組進行快速排序的標準庫函數(shù)。要自定義qsort的比較函數(shù),你需要傳遞一個指向函數(shù)的指針作為參數(shù),該函數(shù)應接受兩個指向要比較的元素的指針,并返回一個整數(shù)來指示它們的順序。

以下是一個自定義比較函數(shù)的示例,該函數(shù)按照降序比較兩個整數(shù):

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

// 自定義比較函數(shù),按降序比較兩個整數(shù)
int compare(const void *a, const void *b) {
    int int_a = *(int*)a;
    int int_b = *(int*)b;
    if (int_a > int_b) {
        return -1;
    } else if (int_a < int_b) {
        return 1;
    } else {
        return 0;
    }
}

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

    // 使用自定義比較函數(shù)對數(shù)組進行排序
    qsort(arr, n, sizeof(int), compare);

    // 打印排序后的數(shù)組
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

在這個示例中,我們定義了一個名為compare的比較函數(shù),它接受兩個指向整數(shù)的指針,并返回一個整數(shù)來指示它們的順序。然后,我們在main函數(shù)中使用qsort函數(shù)對數(shù)組進行排序,并將自定義比較函數(shù)作為參數(shù)傳遞給它。最后,我們打印排序后的數(shù)組以驗證結(jié)果。

0