快速排序

Posted GTK

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序相关的知识,希望对你有一定的参考价值。

一、快速排序基本思路

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

二、快速排序的实现

  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;
}

以上是关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章

深度解析(十六)快速排序

快速排序

基于快速排序方法改成求第k大的数

简单介绍一下快速排序的思想?

用C语言编程实现快速排序算法

Python实现排序算法之快速排序