legongju.com
我们一直在努力
2025-01-14 20:22 | 星期二

如何自定义c++快排函数的比较规则

要自定义C++快速排序(Quick Sort)函数的比较规则,你需要创建一个自定义的比较函数,并将其作为参数传递给排序函数

#include
#include
#include

// 自定义比较函数
bool customCompare(int a, int b) {
    // 这里可以定义你自己的比较规则
    // 例如,按照绝对值从小到大排序
    return std::abs(a) < std::abs(b);
}

// 快速排序函数,接受自定义比较函数作为参数
template
void quickSort(std::vector& arr, int low, int high, Compare comp) {
    if (low >= high) {
        return;
    }

    int pivotIndex = low + (high - low) / 2;
    T pivot = arr[pivotIndex];

    int i = low, j = high;
    while (i <= j) {
        while (comp(arr[i], pivot)) {
            i++;
        }
        while (comp(pivot, arr[j])) {
            j--;
        }
        if (i <= j) {
            std::swap(arr[i], arr[j]);
            i++;
            j--;
        }
    }

    quickSort(arr, low, j, comp);
    quickSort(arr, i, high, comp);
}

int main() {
    std::vector arr = {-5, 3, 2, 8, -1, 0, 3};

    // 使用自定义比较函数进行排序
    quickSort(arr, 0, arr.size() - 1, customCompare);

    for (int num : arr) {
        std::cout<< num << " ";
    }
    std::cout<< std::endl;

    return 0;
}

在这个示例中,我们定义了一个名为customCompare的自定义比较函数,该函数按照绝对值从小到大对整数进行排序。然后,我们修改了快速排序函数,使其接受一个比较函数作为参数,并在排序过程中使用这个自定义比较函数。最后,在main函数中,我们调用了quickSort函数,并传入了自定义比较函数customCompare

未经允许不得转载 » 本文链接:https://www.legongju.com/article/108228.html

相关推荐

  • winapi在c#中的实际应用案例

    winapi在c#中的实际应用案例

    WinAPI(Windows Application Programming Interface)是Windows操作系统提供的一组编程接口,用于开发Windows应用程序。在C#中,我们通常使用.NET框架提供的类库...

  • c#如何调用winapi函数

    c#如何调用winapi函数

    在C#中,你可以使用P/Invoke(Platform Invoke)来调用Windows API函数。P/Invoke允许托管代码(如C#)调用非托管代码(如C++或Win32 API)。以下是一个简单的示...

  • winapi在c#图形界面开发中的作用

    winapi在c#图形界面开发中的作用

    Windows API(WinAPI)是一组用于与Windows操作系统进行交互的函数和方法 访问底层操作系统功能:WinAPI提供了对底层操作系统功能的访问,如窗口管理、文件操作、...

  • c#中winapi函数的参数传递技巧

    c#中winapi函数的参数传递技巧

    在C#中调用Windows API(WinAPI)函数时,需要注意参数的传递方式和数据类型 使用DllImport属性:在C#中调用WinAPI函数,需要使用DllImport属性来导入相应的动态...

  • c++中快排函数的原理是什么

    c++中快排函数的原理是什么

    快速排序(Quick Sort)是一种高效的排序算法,其基本原理是分治法(Divide and Conquer)。在C++中,快速排序函数的原理可以简述为以下几个步骤: 选取一个基准...

  • c++快排函数如何实现高效排序

    c++快排函数如何实现高效排序

    C++中的快速排序(Quick Sort)是一种高效的排序算法,其基本思想是通过选取一个基准元素,将数组分为两部分,使得一部分的元素都小于基准元素,另一部分的元素都...

  • c++中coredump与异常处理的区别是什么

    c++中coredump与异常处理的区别是什么

    C++中的coredump和异常处理是两个不同的概念,它们之间有一些关联但也有明显的区别 Coredump:
    Coredump是操作系统在程序崩溃时生成的一种文件,用于记录程...

  • c++程序coredump时如何定位问题

    c++程序coredump时如何定位问题

    当C++程序产生coredump时,可以通过以下步骤定位问题: 确认coredump文件的生成:首先,需要确保操作系统允许生成coredump文件。在Linux系统中,可以使用ulimit ...