#include <stdio.h>
#include <iostream>
using namespace std;
int a[101], n;//定义全局变量,在子函数中使用
void quicksort(int left, int right)
{
int i, j, t, temp;
if (left > right)
{
return;
}
temp = a[left]; //temp中存的就是基准数
i = left;
j = right;
while (i != j)
{
//顺序很重要,要先从右边开始找,找比参照数小的值
while (a[j] >= temp && i<j)
j--;
//再找右边的,找比参照数大的值
while (a[i] <= temp && i<j)
i++;
//交换两个数在数组中的位置
if (i<j)
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
a[left] = a[i];
a[i] = temp; //temp是基准值,归位到i的位置
quicksort(left, i - 1);//继续处理左边的,这里是一个递归的过程
quicksort(i + 1, right);//继续处理右边的 ,这里是一个递归的过程
}
int main()
{
int i, j, t;
cout << "请输入一个整数n"<<endl;
cin >> n;
cout << "请输入"<<n<<"个数,用空格分开"<<endl;
for (i = 0; i < n; i++)
cin >> a[i];
//快速排序调用,n是数组的length,但是下标只能到n-1
quicksort(0, n-1);
cout << "排序后的值:" << endl;
for (i = 0; i < n; i++)//输出排序后的结果
cout << a[i];
system("pause");
return 0;
}
演示结果如下:
参考博客
http://ahalei.blog.51cto.com/4767671/1365285
图文并茂,解析的特别好。