快速排序 —— 左右指针法的原理:
(1)设最右值为枢轴值
(2)从左往右扫描,发现大于枢轴值的就进行位置互换
(3)从右往左扫描,发现小于枢轴值的就进行位置互换
#include <iostream>
#include <stdlib.h>
using namespace std;
/*******************************************/
/* 快速排序 —— 左右指针法
/******************************************/
void swap(int &a, int &b) //位置互换函数
{
int temp = a;
a = b;
b = temp;
}
int Quick(int array[], int left, int right) //快速排序算法
{
int key = right; //枢轴key,最右值
while (left < right)
{
while (left < right && array[left] <= array[key]) //从左扫描到右,发现>key就结束本次循环
{
++left; //最左值
}
while (left < right && array[right] >= array[key]) //从右扫描到左,发现<key就结束本次循环
{
--right;
}
swap(array[left], array[rig