快速排序

来源:互联网 发布:java事务 编辑:程序博客网 时间:2024/04/29 06:42
#include<iostream>


using namespace std;
template <class T1,class T2>
int split(T1 a[],T2 first,T2 last);


template <class T1,class T2>
void quick_sort(T1 a[],T2 first,T2 last)
{
     if(first<last)
     {
                   int split_point;
                   split_point=split(a,first,last);
                   quick_sort(a,split_point+1,last);
                   quick_sort(a,first,split_point);
                   for(int i=first;i<last;i++)
                   {
                           cout<<a[i]<<" ";
                   }
                   cout<<"quick_sort over"<<endl;
     }
}


template <class T1,class T2>
int split(T1 a[],T2 first,T2 last)
{
    int split_point;
    int pivot;
    pivot=a[first];
    split_point=first;
    for(int unknown=first+1;unknown<=last;unknown++)
    {
            if(a[unknown]<pivot)
            {
                                split_point++;                                
                                int temp=a[unknown];
                                a[unknown]=a[split_point];
                                a[split_point]=temp;


            }
    }
    a[first]=a[split_point];
    a[split_point]=pivot;
    return split_point;
}


int main()
{
    int n;
    cout<<"input n:";
    cin>>n;
    cout<<"intut "<<n<<" num"<<endl;
    int i,j;
    char a[n];
    for(i=0;i<n;i++)
    {
              cin>>a[i];      
    }
    quick_sort(a,0,n-1);            //用n就不能看到字符的完整显示(char时) 
    for(i=0;i<n;i++)
    {
                    cout<<a[i]<<" ";
    }
    system("pause");
    return 0;
}
原创粉丝点击