算法导论:快速排序代码

来源:互联网 发布:ios开发 耗电量优化 编辑:程序博客网 时间:2024/05/18 03:01
#include <iostream>using namespace std;void exchange(int& a, int& b){    int temp;    temp = a;    a = b;    b = temp;}int part(int* a,int p,int r){    int x = a[r];    int i = p-1;    for(int j=p;j<=r-1;j++)    {        if(a[j]<=x)        {            i=i+1;            exchange(a[i],a[j]);        }    }    exchange(a[i+1],a[r]);    return i+1;}void quicksort(int* a,int p, int r){    int q;    if(p<r)    {        q = part(a,p,r);        quicksort(a,p,q-1);        quicksort(a,q,r);    }}void print(int* a,int n){    for(int i=0;i<n;i++)        cout<<a[i]<<"  ";}int main(){    int a[10]={3,5,21,1,9,56,4,6,12,19};    quicksort(a,0,10);    print(a,10);    cout << "Hello world!" << endl;    return 0;}


对照书上伪代码可以写出程序,注意的是,在partition中,p指的是起始元素索引,r是结束元素索引,在不同语言中实现要注意下标。

0 0
原创粉丝点击