快排(C语言(.cpp文件))
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXSIZE 100
struct Node{
int data[MAXSIZE];
int last;
};
typedef struct Node *List;
void makeEmpty(List &L);
List addList(List L);
List quickSort(List &L,int low,int high);
int Partition(List L,int low,int high);
void print(List L);
int main(){
List L;
L = (List)malloc(sizeof(Node) * MAXSIZE);
makeEmpty(L);
L = addList(L);
L = quickSort(L,1,L->last);
print(L);
return 0;
}
void makeEmpty(List &L){
L->last = 0;
L->data[0] = 0;
}
List addList(List L){
printf("请输入要输入几个数:");
int N;
scanf("%d",&N);
int i;
for(i = 1;i <= N;i++){
scanf("%d",&L->data[i]);
L->last++;
}
return L;
}
List quickSort(List &L,int low,int high){
if(low < high){
int pivot = Partition(L,low,high);
quickSort(L,low,pivot - 1);
quickSort(L,pivot + 1,high);
}
return L;
}
int Partition(List L,int low,int high){
L->data[0] = L->data[low];
int pivot = L->data[low];
while(low < high){
while(L->data[high] >= pivot && low < high){
high--;
}
L->data[low] = L->data[high];
while(L->data[low] <= pivot && low < high){
low++;
}
L->data[high] = L->data[low];
}
L->data[low] = L->data[0];
return low;
}
void print(List L){
int i;
for(i = 1;i <= L->last;i++){
printf(" %d",L->data[i]);
}
}