快速排序是面试中经常被考到的算法,所以掌握快速排序很重要。。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
例:5 2 6 8 4 3 7
经过第一次快速排序之后: 3 2 4 5 8 6 7
下面是快速排序的程序:
#include<stdio.h>
void Quick_Sort(int*,int ,int );
int Find_Position(int *,int ,int );
int main()
{
int i = 0;
int a[6] = {25,56,12,3,87,26};
Quick_Sort(a,0,6);
for(i = 0;i < 6;i++)
printf("%d",a[i]);
printf("\n");
return 0;
}
void Quick_Sort(int*a,int low ,int high )
{
int pos = 0;
if(low <= high)
{
pos = Find_Position(a,low,high);
Quick_Sort(a,low,pos - 1);
Quick_Sort(a,pos+1,high);
}
}
int Find_Position(int *a,int low ,int high)
{
int Val = a[low];
while(low <= high)
{
while(a[high] > Val)
high--;
a[low] = a[high];
while(a[low] < Val)
low++;
a[high] = a[low];
}
a[low] = Val;
return low;
}