快速排序的思想:
选择数组中的一个数作为中轴线,然后以这个中轴线为中心,大于中轴线的数据放到右边,小于中轴线的数据放到左边,
然后每次比较完后再变中轴线的位置,不断比较下去
代码:
#include <iostream>
using namespace std;
template <class T>
void quick_sort(T arry[], int left, int right)
{
if (left < right)
{
int i = left;
int j = right + 1;
T pivot = arry[left]; //选左边的为中轴线
do
{
do i++; while (arry[i] < pivot);
do j--; while (arry[j] > pivot);
if(i < j)
swap(arry[i],arry[j]);
} while (i < j);
swap(arry[left],arry[j]); //改变中轴线的位置
quick_sort(arry,left,j-1);
quick_sort(arry,j+1,right);
}
}
int main()
{
int arry[12] = { 7,8,9,0,11,4,5,6,1,2,3 ,9999};
q