#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;
}
快速排序
最新推荐文章于 2022-06-17 09:02:40 发布