分治法排序——C++实现

来源:互联网 发布:ettercap linux 安装 编辑:程序博客网 时间:2024/06/09 18:50
#include<iostream>#include"stdlib.h"#definerandom(x)(rand()%x)using namespace std;int count1=0,count2=0;int comp(int a,int b){count1++;if(a<=b)return 1;elsereturn 0;}void swap(int a,int b){int t;t=a;a=b;b=t;count2++;}int split(int aa[],int low,int high){int k,i=low;int x=aa[low];for(k=low+1;k<=high;k++){i=i+1;if(i!=k)swap(aa[i],aa[k]);}swap(aa[low],aa[i]);return i;}void quick_sort(int A[],int low,int high){int k;if(low<high){k=split(A,low,high);quick_sort(A,low,k-1);quick_sort(A,k+1,high);}}int main(){int n;cout<<"输入排序元素个数n=";cin>>n;cout<<endl<<"产生"<<n<<"个0-100之间的随机整数为:";int * A=new int[n];for(int i=0;i<n;i++){A[i]=random(101);cout<<A[i]<<" ";}cout<<endl<<endl<<"采用分治法排序后为:";quick_sort(A,0,n-1);for(int j=0;j<n;j++){cout<<A[j]<<" ";}cout<<endl<<endl<<"排序过程中的比较次数count1="<<count1<<"   交换次数count2="<<count2<<endl;return 0;}

0 0
原创粉丝点击