代码如下:
#include <stdio.h>
#define DATA_ARRAY_SIZE 10
typedef int DataType;
void DisplayArray(DataType data[], int size)
{
for(int i=0; i<size; i++) {
printf("%d ", data[i]);
}
printf("\n");
return;
}
void QuickSort(DataType src[], int left, int right);
int main()
{
DataType srcData[DATA_ARRAY_SIZE] = {
3,2,4,6,9,1,21,43,29,59};
QuickSort(srcData, 0, DATA_ARRAY_SIZE-1);
DisplayArray(srcData,DATA_ARRAY_SIZE);
return 0;
}
void QuickSort(DataType src[], int left, int right)
{
/* 快速排序的出口 */
if(left >= right) {
return;
}
int i = left;
int j = right;
DataType key = src[i];
while(i<j) {
while((i<j) && (key >= src[j])) {
j--; //从右侧扫描找到大于key的元素
}
src[i] = src[j];
while((i<j) && (key <= src[i])) {
i++; //从左侧扫描找到小于key的元素
}
src[j] = src[i];
}
src[i] = key; //完成轴点位置确定
QuickSort(src, left, i-1);
QuickSort(src, i+1, right);
}