代码:
#include <stdio.h>
int Partion(int *arr, int low, int high)
{
int tmp = arr[low];
while (low < high)
{
while (low < high&&arr[high] >= tmp)
{
--high;
}
if (low >= high)
{
break;
}
else
{
arr[low] = arr[high];
}
while (low < high&&arr[low] <= tmp)
{
low++;
}
if (low >= high)
{
break;
}
else
{
arr[high] = arr[low];
}
}
arr[low] = tmp;
return low;
}
void Quick(int *arr, int start, int end)
{
int par = Partion(arr,start,end);
if (par > start + 1)//如果左边有两个数据以上
{
Quick(arr,start,par-1);
}
if (par < end-1)//如果右边有两个数据以上
{
Quick(arr, par + 1, end);
}
}
void QuickSort(int *arr, int len)
{
Quick(arr,0,len-1);
}
void Show(int *arr, int len)
{
for (int i = 0;i < len;++i)
{
printf("%d ",arr[i]);
}
printf("\n");
}
int main()
{
int arr[] = {1,3,0,34,21,66,32,21,8,9};
int len = sizeof(arr) / sizeof(arr[0]);
QuickSort(arr,len);
Show(arr,len);
return 0;
}