快速排序就是在原数组中指定一个元素a(随机或数组第一个元素),然后调整数组中所有比a小的元素到a的左边,比a大的元素到a的右边。调整完之后,在用同样的方法处理a左边和右边的子数组,到最后使整个数组全部排序完毕。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void quicksort(int a[], int low, int high)
{
int temp = 0;
int i = low;
int j = high;
temp = a[low];
if(low < high)
{
while(i<j)
{
while(a[j]>=temp && i<j)
{
j--;
}
a[i] = a[j];
while(a[i]<=temp && i<j)
{
i++;
}
a[j] = a[i];
}
a[i] = temp; //分界元素回到分界处
quicksort(a,low,i-1);
quicksort(a,j+1,high);
}
}
void main()
{
int array[6] = {4,3,10,82,2,1};
quicksort(array,0,5);
for(int i=0;i<6;i++)
{
printf("%d,",array[i]);
}
}