当前位置:首页 > 芯闻号 > 充电吧
[导读]快速排序:冒泡排序的一种改进排序方法 基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按次方法对这两部分数据分别进行快速排序,整个排

快速排序:冒泡排序的一种改进排序方法

基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,

然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 。

        “快速排序法”使用的是递归原理,下面我结合一个例子来说明“快速排序法”的原理。首先给出一个数组

{53,12,98,63,18,72,80,46, 32,21},先找到第一个数--53,把它作为中间值,也就是说,要把53放

在一个位置,使得它左边的值比它小,右边的值比它大。{21,12,32, 46,18,53,80,72,63,98},这样

一个数组的排序就变成了两个小数组的排序--53左边的数组和53右边的数组,而这两个数组继续用同样的方式

继续下去,一直到顺序完全正确。

结合理论知识整理下几种实现快速排序的算法,可以提供参考的,不足之处,还请多指教!

/*方法一:*/ 
int sort(int *array, int left, int right)
{
	int i, j, tmp;
	
	i=left;
	j=right;
	tmp = array[left];
	while(i=tmp)
		{
			j--;
		}
		if(i
/*方法二:*/ 
void QuickSort2(int *array, int min, int len)
{
	int i, j, tmp;
	
	i = min;
	j = len;
	if(i=tmp)
			{
				j--;
			}
			if(i
/*方法三*/ 
void QuickSort3(int *array, int min, int len)
{
	int i,j,tmp;
	
	if(min>len)
	{
		return;
	}
	i = min;
	j = len;
	while(i!=j)
	{
		tmp = array[i];
		while(itmp)
		{
			j--;
		}
		if(i
提供了测试程序代码,验证下是否正确。
#include
#include
#include

void PrintArray(int *array)
{
	int i;
	for(i=0; i<10; i++)
		printf("%d ", array[i]);
	printf("n");
}

int main(int argc, char **argv)
{
	int array[10]={7,2,4,1,3,8,9,6,5,0};
	PrintArray(array);
	
	//QuickSort1(array, 0, 10);
	//QuickSort2(array, 0, 10);
	QuickSort3(array, 0, 10);
	PrintArray(array); 
	return 0;
} 
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

以前都只是在网上搜的能用的例子,对一些参数不是很清楚,这次汇总。而且网络通信还是很常用的通信手段。

关键字: api c Linux socket

1.写在前面 周六了...依然跳票...没有新文章产出...因为很忙...是的... 为了证明笔者没有放弃这块阵地,整合三篇去年的文章,今天一起来学习一下:快速排序及其优化 和 STL的sort算法 通过本文你将了解到以...

关键字: 快速排序 ST

什么是Littelfuse setP™温度指示器?它有什么作用?2019年6月12日讯 - - Littelfuse, Inc. (NASDAQ: LFUS)今日宣布推出经过扩展的PolySwitch® setP™ 系列...

关键字: c littelfuse type USB 连接器

关注、星标 嵌入式客栈 ,干货及时送达 [导读] 前面文章《聊聊改变世界的5大算法》,一文中提到快速排序算法对世界影响巨大,估计很多人不以为然,本文来尝试解读一下为啥。 快排有多快 说到快我只推崇葵花宝典,那叫一个快啊~...

关键字: 代码 快速排序

第三方代码的使用是企业能够快速高效建立新系统、新产品、新平台的关键因素,能大幅度缩短开发周期,减少人力和资金的投入。目前大部分第三方代码包含大量的开源代码,并且主要是以二进制代码或是源代码的方式

关键字: c 代码

作为初学者,我想记录一下我的学习状况,一是可以回头寻找自己的进步,二是希望我可以通过这种学习方式来指导未来想学的伙伴们。

关键字: c C语言 Linux

根据今年早些时候发布的2019年关于嵌入式市场研究的报告,虽然物联网、嵌入式视觉、机器学习和其他新兴技术的重要性日益提高,但C和C ++仍是嵌入式开发中占主导地位的编程语言。

关键字: c python 嵌入式 技术前沿 ++

单例模式 单例模式,可以说设计模式中最常应用的一种模式了,据说也是面试官最喜欢的题目。但是如果没有学过设计模式的人,可能不会想到要去应用单例模式,面对单例模式适用的情况,可能会优先考虑使用全局或者静

关键字: c 单例 qt单例模式

智能家居是在互联网影响之下物联化的体现。现在是智能家居产业最好的时代,用户需求明显,产品厂商极其活跃,供销两旺的势头越来越明显。但智能家居毕竟是一个新兴事物,加上5G、AIoT等新技术的加持,在市场定位、渠道建设、商业...

关键字: c to 智能家居 b

刚刚写的SPI驱动,想移植到LINUX上面用来读写SD卡 只测试了发送,没有测试接收. spi.c /***********************************************

关键字: c delay
关闭
关闭