#include<stdio.h>
#include<iostream>
#define MAXL 100
typedef int KeyType;
typedef char InfoType;
typedef struct
{
KeyType key;
InfoType data;
}RecType;
void CreateList(RecType R[], KeyType keys[], int n)
{
for (int i = 0; i < n; i++)
{
R[i].key = keys[i];
}
}
void Display(RecType R[], int n)
{
for (int i = 0; i < n; i++)
{
printf("%d", R[i].key);
}
printf("\n");
}
void disppart(RecType R[], int s, int t)
{
static int i = 1;
int j;
printf("第%d次划分:", i);
for (j = 0; j < s; j++)
printf(" ");
for (j = s; j <= t; j++)
printf("%3d", R[j].key);
printf("\n");
i++;
}
int partition(RecType R[], int s, int t)
{
int i = s, j = t;
RecType tmp = R[i];
while (i<j)
{
while (j>i && R[j].key >= tmp.key)
j--;
R[i] = R[j];
while (i<j && R[i].key <= tmp.key)
i++;
R[j] = R[i];
}
R[i] = tmp;
disppart(R, s, t);
return i;
}
void QuickSort(RecType R[], int s, int t)
{
int i;
if (s<t)
{
i = partition(R, s, t);
QuickSort(R, s, i - 1);
QuickSort(R, i + 1, t);
}
}
int main()
{
int n = 10;
RecType R[MAXL];
KeyType a[] = { 3,7,4,2,8,1,9,0,5,6 };
CreateList(R, a, n);
printf("排序前:");
Display(R, n);
QuickSort(R, 0, n - 1);
printf("排序后:");
Display(R, n);
system("pause");
return 1;
}
