/*
Author:Albert Tesla Wizard
Time:2020/11/22 17:45
*/
#include<bits/stdc++.h>
#define MAXSIZE 1000
using namespace std;
struct Sqlist
{
int* elem;
int length;
};
int create(Sqlist&L,int a[],int n)
{
L.elem=new int[MAXSIZE];
L.length=0;
for(int i=0;i<n;i++){L.elem[i+1]=a[i];L.length++;}
}
void print(Sqlist L)
{
for(int i=1;i<=L.length;i++)cout<<L.elem[i]<<" ";
cout<<'\n';
}
int Partition1(Sqlist&L,int low,int high)
{
int pivot=L.elem[low];
while(low<high)
{
while(low<high&&L.elem[high]>=pivot)high--;
if(low<high)swap(L.elem[low++],L.elem[high]);
while(low<high&&L.elem[low]<=pivot)low++;
if(low<high)swap(L.elem[low],L.elem[high--]);
}
return low;
}
int Partition2(Sqlist&L,int low,int high)
{
L.elem[0]=L.elem[low];
int pivot=L.elem[low];
while(low<high)
{
while(low<high&&L.elem[high]>=pivot)high--;
L.elem[low]=L.elem[high];
while(low<high&&L.elem[low]<=pivot)low++;
L.elem[high]=L.elem[low];
}
L.elem[low]=L.elem[0];
return low;
}
int QuickSort(Sqlist&L,int low,int high)
{
if(low<high)
{
int mid=Partition2(L,low,high);
QuickSort(L,low,mid-1);
QuickSort(L,mid+1,high);
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int a[10]={5,2,3,7,8,10,9,6,1,4};
Sqlist L;
create(L,a,10);
print(L);
QuickSort(L,1,10);
print(L);
return 0;
}
顺序表实现快速排序算法
最新推荐文章于 2022-10-08 13:57:21 发布