c++快排

快排

#include <algorithm>

struct node
{
double x;
double y;
};
node nodexy[maxnum];
int cmp(node a,node b)
{
if(a.x<b.x)
return 1;
else if(a.x==b.x)
{
if(a.y<=b.y)
return 1;
else return 0;
}
return 0;
}

### C++ 实现快速排序算法 #### 快速排序简介 快速排序是一种高效的分治排序算法,具有多项显著优势。在平均情况下,该算法的时间复杂度为 \(O(n \log n)\),使其成为处理大规模数据的理想选择[^1]。 #### 代码实现 下面展示了如何用C++编写快速排序函数: ```cpp #include <iostream> using namespace std; void quickSort(int arr[], int low, int high); int partition(int arr[], int low, int high); // 主程序入口 int main() { int data[] = {8, 7, 2, 1, 0, 9, 6}; int n = sizeof(data)/sizeof(data[0]); cout << "未排序前:" << endl; for (int i=0; i<n; ++i) cout << data[i] << " "; quickSort(data, 0, n-1); cout << "\n已排序后:" << endl; for (int i=0; i<n; ++i) cout << data[i] << " "; return 0; } // 对数组进行分区操作 int partition(int arr[], int low, int high) { int pivot = arr[high]; int i = (low - 1); for (int j = low; j <= high- 1; j++) { if (arr[j] <= pivot) { i++; swap(arr[i], arr[j]); } } swap(arr[i + 1], arr[high]); return (i + 1); } // 执行快速排序逻辑 void quickSort(int arr[], int low, int high) { if (low < high) { int pi = partition(arr, low, high); quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); } } ``` 此版本的快速排序采用了Lomuto划分方案,并通过递归方式调用来完成整个过程。值得注意的是,尽管大多数时候表现良好,但在面对几乎已经排好序的数据集时可能会退化成平方级别的时间消耗[^3]。 #### 关键特性说明 - **速度**: 平均情况下的时间复杂度达到了最优水平\(O(n\log{}n)\)。 - **内存占用低**: 属于就地(in-place)排序方法之一,仅需少量额外存储空间即可工作正常。 - **易读性强**: 整体思路清晰明了,便于学习者掌握核心概念。 - **灵活性高**: 即使存在较多相同数值也不会明显影响整体性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值