输入代码:
//算法分析
//1)设置两个变量I、J,排序开始的时候:I=0,J=N-1;
//2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0];
//3)从J开始向前搜索,即由后开始向前搜索(J=J-1即J--),找到第一个小于key的值A[j],A[j]与A[i]交换;
//4)从I开始向后搜索,即由前开始向后搜索(I=I+1即I++),找到第一个大于key的A[i],A[i]与A[j]交换;
//5)重复第3、4、5步,直到 I=J; (3,4步是在程序中没找到时候j=j-1,i=i+1,直至找到为止。找到并交换的时候i, j指针位置不变。另外当i=j这过程一定正好是i+或j-完成的最后另循环结束。)
#include <iostream>
using namespace std;
void Quicksort(int a[],int low,int high)
{
if(low>=high)
{
return ;
}
int first=low;
int last=high;
int key=a[first];
while(first<last)
{
while(first < last && a[last] >= key)
{
--last;
}
a[first] = a[last];
while(first < last && a[first] <= key)
{
++first;
}
a[last]=a[first];
}
a[first]=key;
Quicksort(a,low,first-1);
Quicksort(a,last+1,high);
}
int main()
{
int i,a[100],x,n=0;
cin>>n;
for(i=0; i<n; i++)
cin>>a[i];
Quicksort(a,0,n-1);
for(i=0; i<=n-1; i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
运行结果:
原文地址:http://blog.csdn.net/linhaiyun_ytdx/article/details/46351539