C 排序算法:快速排序
一、实现
#include<stdio.h>
void quickSort(int *p, int left, int right);
void disArr(int *p,int size);
int main()
{
int arr[] = {1,9,8,7,0,2};
quickSort(arr,0, sizeof(arr) / sizeof(*arr)-1);
disArr(arr, sizeof(arr) / sizeof(*arr));
return 0;
}
void quickSort(int *p,int left,int right)
{
if (left < right)
{
int pivot = p[left], l = left, r = right;
while(l<r)
{
while (l < r&&p[r]>=pivot)//大而移动,小而赋值
r--;
p[l] = p[r];
while (l < r&&p[l]<=pivot)//小而移动,大而赋值
l++;
p[r] = p[l];
}
p[r] = pivot;
quickSort(p,left, r-1);
quickSort(p,r+1, right);
}
}
void disArr(int *p,int size)
{
for (int i = 0; i < size; ++i)
{
printf("%-3d", p[i]);
}
puts("");
}
二、过程演示