博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
“深入理解”—交换排序算法
阅读量:7235 次
发布时间:2019-06-29

本文共 875 字,大约阅读时间需要 2 分钟。

基于交换的排序算法有两种:冒泡排序和快速排序

1、冒泡排序(Bubble Sort)算法描述:比较相邻两个元素的大小,如果反序,则交换。若按升序排序,每趟将数据序列中的最大元素交换到最后位置,就像气泡从水里出来一样。

举例如下:

//冒泡排序	public static void bubblesort(int[] a)	{		boolean flag=true;		for(int i=0;i
i;j--) { if(a[j]
示例中设置了标志,用来进一步优化冒泡排序的性能,具体可参考 

2、快速排序(Quick Sort):是一种分区交换排序算法。采用分治策略对两个子序列再分别进行快速排序,是一种递归算法。

算法描述:在数据序列中选择一个元素作为基准值,每趟从数据序列的两端开始交替进行,将小于基准值的元素交换到序列前端,将大于基准值的元素交换到序列后端,介于两者之间的位置则成为了基准值的最终位置。同时,序列被划分成两个子序列,再分别对两个子序列进行快速排序,直到子序列的长度为1,则完成排序。

示例如下:

//快速排序算法		public static void quicksort(int[] a,int left,int right)		{			int i=left;			int j=right;			int key=a[i];			if(i
=a[i]) //从前边开始找一个比基准值大的元素 { i++; } a[j]=a[i]; a[i]=key; //将基准值放在适当的位置 } //进行递归操作,对各个子序列进行快速排序 quicksort(a,left,i-1); quicksort(a,i+1,right); } }

详细的快速排序算法可参考 

转载于:https://www.cnblogs.com/lanzhi/p/6467307.html

你可能感兴趣的文章
开源项目之easyrtmp
查看>>
怎样打开64位 Ubuntu 的32位支持功能?
查看>>
360路由器c301最新固件支持万能中继
查看>>
RESTful API 设计最佳实践
查看>>
DTD中的属性类型
查看>>
git 服务器的搭建
查看>>
Redis学习笔记8--Redis发布/订阅
查看>>
C++ 类的动态组件化技术
查看>>
【JS小技巧】JavaScript 函数用作对象的隐藏问题(F.ui.name)
查看>>
《OpenGL编程指南第七版》学习——编译时提示“error C2381: “exit” : 重定义;__declspec(noreturn) 不同”错误的解决办法...
查看>>
SaltStack–Job管理
查看>>
firefox快捷键窗口和标签类
查看>>
SpringBoot配置ActiveMQ
查看>>
作用域重叠
查看>>
Java注解的简单了解
查看>>
Effective C++笔记:构造/析构/赋值运算
查看>>
Codeforces 362D Fools and Foolproof Roads 构造题
查看>>
记一次ckeditor上传图片到服务器问题
查看>>
cookies
查看>>
springmvc复习笔记----文件上传multipartResolver
查看>>