21xrx.com
2024-12-22 16:49:09 Sunday
登录
文章检索 我的文章 写文章
"快速排序的C++库函数"
2023-07-10 20:39:27 深夜i     --     --
快速排序 C++ 库函数

快速排序是一种非常重要的排序算法,也是常见的面试考点。在C++的STL中,快速排序也被封装成了库函数,方便程序员使用。

快速排序是一种分治算法,它将一个序列分为两部分,其中一部分比另一部分小,在对每一部分进行递归排序后再将它们合并起来。STL中的快速排序函数是sort,其函数原型为:


void sort (RandomAccessIterator first, RandomAccessIterator last);

其中,first和last分别是指向序列第一个和最后一个元素的迭代器。RandomAccessIterator是随机访问迭代器的泛型名称,支持随机访问。因此,这个库函数可以应用于数组和vector等具有随机访问迭代器的容器。

和大多数排序算法一样,C++中的快速排序函数默认升序排序,即将小的元素放在序列前面。如果需要降序排序,则可以通过传入一个比较函数(cmp)实现。比较函数的原型为:


bool cmp (const Type& a, const Type& b);

其中,Type是待排序元素的类型。如果返回值是true,则表示a

下面是一个快速排序的示例:


#include <iostream>

#include <algorithm>

using namespace std;

int main() {

  int arr[] = 4;

  int len = sizeof(arr) / sizeof(arr[0]);

  sort(arr, arr+len);

  for (int i=0; i<len; i++) {

    cout << arr[i] << " ";

  }

  return 0;

}

运行结果为:1 2 3 4 5

在这个示例中,我们定义了一个整型数组arr,调用sort函数对其进行排序,并将排序后的结果输出。当然,我们也可以传入一个比较函数,比如:


bool cmp(int a, int b)

  return a > b;

int main() {

  int arr[] = 2;

  int len = sizeof(arr) / sizeof(arr[0]);

  sort(arr, arr+len, cmp);

  for (int i=0; i<len; i++) {

    cout << arr[i] << " ";

  }

  return 0;

}

运行结果为:5 4 3 2 1

总之,快速排序是STL中非常重要的库函数之一,掌握它能够帮助我们更好地编写高效的程序。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复