快速排序 C语言

2023-07-28 20:08:19 浏览数 (2)

碎碎念念

快速排序的基本思想是:首先找一个基准数,一般选第一个数或者最后一个数作为基准数,然后先把这一串数以基准数为界限分成两部分,一部分比基准数小,另一部分比基准数大。然后用分治法的思想,进行递归调用,对每一部分继续操作下去,直到每一部分只剩下一个数。

代码

代码语言: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

0 人点赞