算法导论第七章快速排序的C++实现

来源:互联网 发布:网络视频直播平台排行 编辑:程序博客网 时间:2024/05/22 02:28

这个程序应该比较简单,弄清思路两下就出来了

#include<iostream>using namespace std;#define parent(i)  (i/2)#define left(i) (2*i)#define right(i) (2*i+1)//定义一个交换值的函数void swap(int &a,int &b){int tmp;tmp=a;a=b;b=tmp;}//下面定义一个分区函数,其主要作用是找到一个分界点;int  partition(int *A,int p,int r)//r表示的是length-1{int x=A[r];int i=p-1;for(int j=p;j<r;++j){if(A[j]<=x){i+=1;swap(A[i],A[j]);}}swap(A[i+1],A[r]);return i+1;}//下面定义一个快速排序函数void quick_sort(int *A,int p,int r)//此处的r是表示的length-1{   int q;if(p<r){q=partition(A,p,r);quick_sort(A,p,q-1);quick_sort(A,q+1,r);}}int main(){int a[10]={10,9,8,7,6,5,4,3,2,1};int length=10;quick_sort(a,0,9);for(int i=0;i<10;++i)cout<<a[i]<<" ";cout<<endl;system("pause");return 0;}


0 0