快速排序之C++
一、快速排序基本思路
通过一趟排序将要排序的数据分成 两段 ,其中一段的数据均小于另外一段数据,在以此方法对两段数据相同操作(递归)
二、时间复杂度
平均:nlogn
最差情况:o(n^2)
三、快速排序的实现
- 确定分界点 q[i] 可以随机取,两个指针,一个指向头部,一个指向尾部
- 跑一趟后 一侧数据全部小于另一侧数据
- 递归处理左右两侧数据
四、代码实现C++
#include <iostream> using namespace std; const int N = 1e6+10; int n; int q[N]; int quick_sort(int q[] ,int l ,int r ) { if(l >= r) return 0; int x = q[l],i = l-1 , j = r+1; while( i < j ) { do i ++ ; while( q[i] < x); do j -- ; while( q[j] > x); if( i < j ) swap(q[i],q[j]); } quick_sort(q , l , j); quick_sort(q , j+1 , r); } int main() { scanf("%d",&n); for(int i = 0; i < n ; i++) scanf("%d",&q[i]); quick_sort( q , 0 , n-1 ); for(int i = 0; i < n ; i++) printf("%d",q[i]); return 0; }

浙公网安备 33010602011771号