快速排序

来源:互联网 发布:凯利指数软件 编辑:程序博客网 时间:2024/06/06 19:06
#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;typedef struct{    int *r;    int length;} sqlist;void createlink(sqlist &L){    int n;    L.length=0;    cout<<"输入链表长度:"<<endl;    cin>>n;    L.r=(int*)malloc((n+1)*sizeof(int));    int i;    cout<<"输入链表元素:"<<endl;    for(i=1; i<=n; i++)    {        cin>>L.r[i];        ++L.length;    }}void print(sqlist &L){    int i;    cout<<"输出链表元素:"<<endl;    for(i=1; i<=L.length; i++)        cout<<L.r[i]<<" ";    cout<<"\n";}int partition1(sqlist &L,int low,int high){    int pivotkey;    L.r[0]=L.r[low];    pivotkey=L.r[low];    while(low<high)    {        while(low<high&&L.r[high]>=pivotkey)            high--;        L.r[low]=L.r[high];        while(low<high&&L.r[low]<=pivotkey)            low++;        L.r[high]=L.r[low];    }    L.r[low]=L.r[0];    return low;}void Qsort(sqlist &L,int low,int high){    int pivotlc;    if(low<high)    {        pivotlc=partition1(L,low,high);        Qsort(L,low,pivotlc-1);        Qsort(L,pivotlc+1,high);    }}void Quicksort(sqlist &L){    createlink(L);    Qsort(L,1, L.length);    cout<<"快速排序:\n";    print(L);}int main(){    sqlist l;    Quicksort(l);    return 0;}