#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
typedef int Keytype;
typedef struct{
Keytype key;
//InfoType otherinfo;
}RedType;
typedef struct{
RedType r[MAXSIZE+1];
int length;
}SqList;
int Partition(SqList *L, int low, int high);
void Qsort(SqList *L, int low, int high);
void QuickSort(SqList *L);
int main(void){
SqList L;
L.r[1].key = 49;
L.r[2].key = 38;
L.r[3].key = 65;
L.r[4].key = 97;
L.r[5].key = 76;
L.r[6].key = 13;
L.r[7].key = 27;
L.r[8].key = 49;
L.length = 8;
QuickSort(&L);
int i;
for(i=1; i<=8; i++)
printf(" %d ", L.r[i].key);
putchar('\n');
return 0;
}
int Partition(SqList *L, int low, int high){
int pivotkey;
L->r[0] = L->r[low];
pivotkey = L->r[low].key;
while(low < high){
while ( (low < high) &&( (L->r[high].key) >= pivotkey )) --high;
L->r[low] = L->r[high];
while ( (low < high) && ( (L->r[low].key) <= 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 pivotloc;
if(low < high){
pivotloc = Partition(L, low, high);
Qsort(L, low, pivotloc-1);
Qsort(L, pivotloc+1, high);
}
}// Qsort
void QuickSort(SqList *L){
Qsort(L, 1, L->length);
}// QuickSort