快速排序

一、快速排序基本思路

  通过一趟排序将要排序的数据分成  两段  ,其中一段的数据均小于另外一段数据,在以此方法对两段数据相同操作(递归)

二、快速排序的实现

  1. 确定分界点 q[i] 可以随机取
  2. 跑一趟后 一侧数据全部小于另一侧数据
  3. 递归处理左右两侧数据

四、代码实现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;
}

上一篇:win10磁盘管理器看不到驱动器问题


下一篇:观看B站视频学习快速排序