快速排序qs

快速排序代码如下:

View Code
1 #include<iostream>
2  using namespace std;
3 int a[10001];
4 void qs(int s,int e) //s=star ; e = end
5 {
6 int x=a[s],l=s,r=e;//以第一个数为参照做比较
7 if(l>=r) return; //只剩下一个元素,不满足递归基线条件
8 while(l<r){ //从高位开始比较
9 while(l<r&&a[r]>=x) r--; //不用交换元素的话,不断从高位往低位减少
10 a[l]=a[r]; //不满足 a【r】 》= x ,则交换元素
11 while(l<r&&a[l]<=x) l++; //不用交换元素的话,不断从低位往高位增加
12 a[r]=a[l]; //不满足a【l】 《=x,则交换元素
13 }
14 a[r]=x; //把枢轴元素放到a【r】中 。
15 qs(s,r-1); //已经确定好位置的元素不用再传去递归了,故r-1
16 qs(r+1,e);//递归
17 }
18 int main() {
19 int i,n;
20 cin>>n;
21 for(i=0;i<n;i++)
22 cin>>a[i];
23 qs(0,n-1);
24 for(i=0;i<n;i++)
25 cout<<a[i]<<" ";
26 system("pause");
27 }
posted @ 2011-03-07 21:48  jnje  阅读(323)  评论(0编辑  收藏  举报