快速排序是对冒泡排序的⼀种改进,它的基本思想是:选择⼀个基准数,通过⼀趟排序将要排序的数据分割成独⽴的两部分;其中⼀部分的所有数据都⽐另 外⼀部分的所有数据都要⼩。然后,再按此⽅法对这两部分数据分别进⾏快速排序,整个排序过程可以递归进⾏,以此达到整个数据变成有序序列。
其中每⼀趟的模式通过设置key当基准元素,key的选择可以是数据的第⼀个, 也可以是数据的最后⼀个。
#include<stdio.h>
#define size 6
void Quick_sort(int arr[],int low,int high)
{
int left=low;
int right=high;
int key=arr[low];
if(left>right)
{
return ;
}
while(left<right)
{
while(left<right && key<=arr[right])
{
{
right--;
}
}
if(left<right)
{
arr[left++]=arr[right];
}
while(left<right && key>=arr[left])
{
left++;
}
if(left<right)
{
arr[right--]=arr[left];
}
}
arr[left]=key;
Quick_sort(arr,low,left-1);
Quick_sort(arr,left+1,high);
}
int main()
{
int arr[size]={5,1,3,6,7,2};
Quick_sort(arr,0,size-1);
for(int i=0;i<size;i++)
{
printf("%d ",arr[i]);
}
return 0;
}