快速排序 插入排序

来源:互联网 发布:java 内存泄漏 工具 编辑:程序博客网 时间:2024/05/18 08:20
#include<iostream>#include<stdlib.h>using namespace std;#define ___  <<","<<insertSort(int n,int ia[]){    cout<<"insert sort!"<<endl;    for(int i=1;i!=n;++i)        for(int j=i;j!=0;--j)            if(ia[j]<ia[j-1]){                swap(ia[j],ia[j-1]);            }}inline static swap(int &a,int &b){    int temp=a;    a=b;    b=temp;}int getPivotIndex(int &L,int &R,int ¢er,int ia[]){//获得枢纽值,3值的中间值    if(ia[L]>ia[center])        swap(ia[L],ia[center]);    if(ia[center]>ia[R])        swap(ia[center],ia[R]);    if(ia[L]>ia[center])        swap(ia[L],ia[center]);    return center;}void quickSort(int L,int R,int ia[]){    if(L==R)        return;    else if(R-L==1&&ia[L]>ia[R]){        swap(ia[L],ia[R]);        return;    }    int center=(L+R)/2;    int PivotIndex=getPivotIndex(L,R,center,ia);    swap(ia[PivotIndex],ia[R]);    int i=L,j=R-1;    while(i<j)    {        for(;i!=R;)            if(ia[i]<ia[R])                ++i;            else   break;        for(;j!=L-1;)            if(ia[j]>ia[R])                --j;            else   break;        swap(ia[i],ia[j]);//对调元素    }    /*最终,i指向大元素,j指向小元素*/    swap(ia[i],ia[j]);    swap(ia[i],ia[R]);    int l1=L,r1=i-1;    int l2=i+1,r2=R;    if(l1<=r1)        quickSort(l1,r1,ia);    if(l2<=r2)        quickSort(l2,r2,ia);//    for(int k=L;k!=R;++k)//        cout<<ia[k]<<",";//    cout<<endl;}int main(){    const int count=20;    int ia[count]={88,15,22,63,45,55,32,73,99,17,                           27,11,36,37,96,53,47,81,62,44};    quickSort(0,count-1,ia);   // insertSort(count,ia);    for(int i=0;i!=count;++i)        cout<<ia[i]<<",";    cout<<endl;    return system("pause");}

0 0