一、基本思想是:
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
二、方法1实现程序:左右两个方向扫描
// 快速排序:选第一个对象作为基准,按照该对象的排序码大小,将整个对象
// 序列划分为左右两个字序列:
// 左侧子序列中所有对象的排序码都小于或等于基准对象的排序码;
// 右侧子序列中所有对象的排序码都大于基准对象的排序码;
// 基准对象则排在这两个子序列中间,这也是该对象最终应放的位置
// 然后分别对这两个子序列重复施行上述方法,直到所有的对象都排在相应位置上为止
#include <iostream>
// 一次快速排序算法
int quickPass(int arr[], int low, int high) {
int down, up, temp;
down = low;
up = high;
temp = arr[low];
while(down < up) {
while((down < up) && arr[up] >= temp) // 从右向左扫描
up--;
if(down