算法的稳定性 如果待排序表中有两个元素 Ri 和 Rj,其对应的关键字keyi = keyj,注意是关键字相等,且在排序前 Ri 排在 Rj 前面,如果使用某一算法排序后,Ri 仍在 Rj 前面,则称这个算法是稳定的,否则是不稳定的。 <!--more--> 在排序过程中,根据元素是否完全在内存中, ...
分类:
编程语言 时间:
2017-09-04 12:04:20
阅读次数:
310
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 思想 思想 n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ①初始状态:无序区为R[1. ...
分类:
编程语言 时间:
2017-09-03 21:12:21
阅读次数:
171
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 算法原理 冒泡排序算法的运作如下:(从后往前) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复 ...
分类:
编程语言 时间:
2017-09-03 21:03:13
阅读次数:
225
参考博客:基于python的七种经典排序算法 [经典排序算法][集锦] 经典排序算法及python实现 首先明确,算法的实质 是 列表排序。具体就是操作的列表,将无序列表变成有序列表! 一、排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 ...
分类:
编程语言 时间:
2017-09-02 23:29:16
阅读次数:
465
一、希尔排序 (1)简介 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少, ...
分类:
编程语言 时间:
2017-08-13 20:08:15
阅读次数:
148
冒泡排序,是我们学习数据结构第一个排序算法,也是一种最常见和简单的排序算法。 排序原理: 我们把一个数组从左到右依次两两元素比较,比较完成一趟后,能确定最大(最小)值,放在最右边(最左边); 剩下的元素重复上述步骤,直到整个数组有序。 该算法时间复杂度一般为n2 。 java实现代码如下: 该算法有 ...
分类:
编程语言 时间:
2017-08-12 22:43:49
阅读次数:
235
java技术栈 1 java基础: 1.1 算法 1.1 排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序 1.2 二叉查找树、红黑树、B树、B+树、LSM树(分别有对应的应用,数据库、HBase) 1.3 BitSet解决数据重复和是否存在等问题 1. ...
分类:
编程语言 时间:
2017-08-12 14:02:40
阅读次数:
219
排序算法 下面算法均是使用Python实现: 插入排序 原理:循环一次就移动一次元素到数组中正确的位置,通常使用在长度较小的数组的情况以及作为其它复杂排序算法的一部分,比如mergesort或quicksort。时间复杂度为 O(n2) 。 # 1nd: 两两交换 def insertion_sor ...
分类:
编程语言 时间:
2017-08-10 10:12:02
阅读次数:
226
#sorted
#排序算法
#排序也是在程序中经常用到的算法
#无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小
#如果是数字,我们可以直接比较,但是如果是字符串或者两个dict,直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来
#Python内置的..
分类:
编程语言 时间:
2017-08-07 17:42:09
阅读次数:
143
希尔排序 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。 该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键 ...
分类:
编程语言 时间:
2017-08-06 00:14:53
阅读次数:
236