碎碎念念
快速排序的基本思想是:首先找一个基准数,一般选第一个数或者最后一个数作为基准数,然后先把这一串数以基准数为界限分成两部分,一部分比基准数小,另一部分比基准数大。然后用分治法的思想,进行递归调用,对每一部分继续操作下去,直到每一部分只剩下一个数。
代码
代码语言:javascript复制#include<stdio.h>
void fast(int array[],int first,int end)//从小到大排序。
{
if(first>=end)//相同说明这小部分一排序完毕。
return;
int standard=array[first],i=first,j=end,s;//选取第一个为基准数。
while(i!=j)//从两边出发,排成一边比基准数小的,一边比基准数大的。
{
while(j>i&&array[j]>=standard)//从右边出发,找到比基准数小的。
j--;
while(j>i&&array[i]<=standard)//从左边出发,找到比基准数大的。
i ;
if(j>i)//交换这两个数。
{
s=array[i];
array[i]=array[j];
array[j]=s;
}
}
array[first]=array[j];//把基准数放中间,这里的中间指的是不在两边。
array[j]=standard;
fast(array,first,i-1);//继续排基准数左边的。
fast(array,i 1,end);//继续排基准数右边的。
}
int main()
{
int array[10]={1,2,5,10,2,8,7,7,6,3};
fast(array,0,9);
for(int i=0;i<10;i )
printf("%d ",array[i]);
}
快速排序是冒泡排序的进化版,数多时比冒泡排序少了交换次数。
冒泡排序
https://blog.csdn.net/weixin_62264287/article/details/122735275?spm=1001.2014.3001.5502