第七章 快速排序

本文深入介绍了快速排序算法的实现原理及过程,展示了其高效的排序能力,并通过C++代码实例进行了详细解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

快速排序最坏情况下时间复杂度是O(n*n),但是它平均时间复杂度是O(N*logn),并且常数因子很小,可实现就地排序,所以被作为内排序的常用排序方法.

为什么张木匠在演讲

www.fewnai.com

,所以被作为内排序的常用排序方法.

  1. #include <iostream>  
  2. using namespace std;  
  3. void swap(int &i,int &j)  
  4. {  
  5.     int temp=i;  
  6.     i=j;  
  7.     j=temp;  
  8. }  
  9. int partition(int *vector, int low, int high)  
  10. {  
  11.     int pivotpos=low;  
  12.     int pivot=vector[low];  
  13.     for(int i=pivotpos+1;i<=high;i++)  
  14.     {  
  15.         if (vector[i]<pivot)  
  16.         {  
  17.             pivotpos++;  
  18.             if(i!=pivotpos)  
  19.             {  
  20.                 swap(vector[i],vector[pivotpos]);  
  21.             }  
  22.         }  
  23.     }  
  24.     vector[low]=vector[pivotpos];  
  25.     vector[pivotpos]=pivot;  
  26.     return pivotpos;  
  27. }  
  28.   
  29. void quickSort(int *vector,int low,int high)  
  30. {  
  31.     if(low<high)  
  32.     {  
  33.         int pivotpos=partition(vector,low,high);  
  34.         quickSort(vector, low, pivotpos-1);  
  35.         quickSort(vector, pivotpos+1, high);  
  36.     }  
  37. }  
  38. int main(int argc, const char * argv[])  
  39. {  
  40.     int A[]={100,11,43,65};  
  41.     //int A[]={56,3,5,68,100,32};  
  42.     //int A[]={68,100,32};  
  43.     quickSort(A, 0, sizeof(A)/sizeof(int)-1);  
  44.     for(int i=0;i<sizeof(A)/sizeof(int);i++)  
  45.     {  
  46.         cout<<A[i]<<"   ";  
  47.     }  
  48.     cout
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值