首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >快速排序 C语言

快速排序 C语言

作者头像
叶茂林
发布2023-07-28 20:08:19
发布2023-07-28 20:08:19
5280
举报

碎碎念念

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

代码

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 碎碎念念
  • 代码
  • 冒泡排序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档