归并排序和希尔排序

排序算法

  

2019-06-11 23:22:42

1  归并排序 归并排序是一种分治算法,把大的问题分成一个个小部分去处理,最终解决大问题。  假设有两个数组A,B,每个数组都是从小到大排好序的,如果要将这两个数组合并成一个数组,并且从小到大排好序 那么只需要从头比较,依次将A,B中较小的值放入新的数组。 对于一个无序的数组,也可以通过这种方法排序,将数组从中间分成2部分,但是大概率是两个无序数组,然后接着对 分开的...

排序算法之 堆排序

排序算法

  

2019-06-18 22:43:19

在堆中,我们熟悉的有小顶堆、大顶堆。其是怎么定义呢,正如一颗二叉树的数据结构,大顶堆的定义是每一个根(节点)都会比它们的两个节点的值要大,二小顶堆,其恰恰是跟大顶堆相反。 我们已大顶堆为例:  堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此...

排序——初级排序算法

算法  排序

  

2019-06-19 05:54:13

I. Compare接口 Java中提供了 Compare 接口来给我们自定义的数据类型定义排序规则,Compare 接口的定义如下,实现该接口需要重写 compareTo 方法来定义目标类型对象的自然次序。 Java中封装的数字类型 Integer、Double 以及 String 和其他许多高级数据类型(如 File、URL)都实现了 Compare 接口。 对于v < w,v = w ...

十大排序算法总结

算法  排序

  

2019-06-27 13:49:23

转载自 https://www.cnblogs.com/guoyaohua/p/8600214.html 和             https://blog.csdn.net/lovesomnus/article/details/42048425 0、排序算法说明 0.1&nb...

转载自:http://www.cnblogs.com/skywang12345/p/3602162.html 堆排序介绍 堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法。 因此,学习堆排序之前,有必要了解堆!若读者不熟悉堆,建议先了解堆(建议可以通过二叉堆,左倾堆,斜堆,二项堆或斐波那契堆等文章进行了解),然后再来学习本章。 我们知道,堆分为"最大堆"和...

C++常用排序算法总结

排序算法

  

2019-07-06 21:36:46

直接插入排序 整个序列分为有序区和无序区,取第一个元素作为初始有序区,然后第二个开始,依次插入到有序区的合适位置,直到排好序 冒泡排序 比较相邻的元素,如果反序则交换,过程也是分为有序区和无序区,初始时有序区为空,所有元素都在无序区,经过第一趟后就能找出最大的元素,然后重复便可 快速排序 快速排序首先选一个轴值(pivot,也有叫基准的),将待排序记录划分成独立的两部分,左侧的元素均小于轴值,右侧...

常见排序算法

算法  排序

  

2019-07-19 04:12:30

冒泡排序:每次遍历中,比较连续相邻的元素,如果某一对元素是降序,则互换它们的值 归并排序:算法将数组分为两半,对每部分递归地应用归并排序,在两部分都排好序之后,对它们进行归并。 快速排序:在数组中选择一个主元(privot)的元素,将数组分为两部分,使得第一部分的所有元素搜小于或等于主元,第二部分中的所有元素都大于主元素,对第一部分递归地应用排序算法,然后对第二部分递归地应用排序算法  ...

快排的golang实现

算法  排序

  

2019-07-31 19:46:13

今天想试试自己的golang功底,所以想用go实现各种快排,假设我们的测试例子是这样的: 随机函数产生的数字可能存在重复,但是对于快排来说无所谓。我们先从最原始的冒泡法开始: 其实冒泡法还有很多改良的方法,我更推崇的是这种方法:无序的数可能部分是有序的,尤其是冒泡了几次后,剩余部分很有可能部分有序。所以我的改良方法是: 上面的冒泡改良法在排序过程中前面元素有序加速效果比较明显,如果中间某些元素有序...

快速排序: 同冒泡排序一样,快速排序也属于交换排序。通过元素之间的比较和交换位置来达到排序的目的。 不同的是,冒泡排序在每一轮只把一个元素冒泡到数列的一端,而快速排序在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列的一边,比它小的元素移动到数列的另一边。从而把数列拆分成为两部分。 这种思路叫做分治法。   如图所示,在分治法的思想下,原始数列在每一轮被拆分成两部分,每一步分又在下...

Java 常见的排序算法

排序算法

  

2019-08-11 09:02:58

这篇文章主要介绍常见的排序算法,图片来源于网络,java代码实现为本人编写,如若有不当之处还望指正。 分类 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序。 先来看看8种排序之间的...

最近在看排序算法,对此做个总结。 参考文章: https://www.cnblogs.com/onepixel/articles/7674659.html https://www.cnblogs.com/guoyaohua/p/8600214.html 目录 一、算法的分类 1、概念 2、分类 3、比较 二、各算法原理及实现 1、冒泡排序(Bubble Sort) 2、选择排序(Selection...

整理一份适合面试的八大排序算法,参考: https://blog.csdn.net/csdn_baotai/article/details/80293679 https://blog.csdn.net/ysunflower/article/details/80425788 https://blog.csdn.net/prstaxy/article/details/8166360(归并排序) htt...