选择排序,插入排序,希尔算法 详解(原理、例子、代码实现)
分类:
编程语言 时间:
2015-08-28 09:35:44
阅读次数:
149
接上文。增量序列h有两条重要性质:
首先,定义h排序结束后的数组为h有序。
1、k排序一个h有序的数组,得到的数组既为k有序也为h有序。
2、当k、h互质时,对该新数组进行g排序,比较次数少于N(k?1)(h?1)/gN(k - 1)(h - 1)/g
下面是一个很不错的增量序列hi=1,8,23,77,281,1073,4193,16577...h_i = {1, 8, 23, 77, 2...
分类:
编程语言 时间:
2015-08-26 12:11:03
阅读次数:
176
由于很多大神已经总结过各种排序算法的性能及适合坏境,这里便不再总结,只是强调几个重点。
(1)快排的空间复杂度不是o(1),是o(logn)~o(n);
(2)四种不稳定的排序算法:简单选择,快排,希尔和堆排序
(3)冒泡排序最有情况下时间复杂度可优化为o(n);
(4)归并排序的空间复杂度为o(n);
(5)快排在整体倒序的情况下时间复杂度为o(n2)
(6)建一个最大堆的复杂度为o...
分类:
编程语言 时间:
2015-08-26 12:01:32
阅读次数:
184
排序1.js的sort方法,按数值大小排序var arr=[2,4,1,4];arr.sort(function(a,b){return at){A[j+1]=A[j];j--;}A[j+1]=t;}}②.希尔排序(不稳定):希尔(Shell)排序的基本思想是:先取一个小于n的整数d1作为第一个增量...
分类:
编程语言 时间:
2015-08-25 23:19:35
阅读次数:
203
希尔排序Shellsort的名称源于它的发明者Donald Shell,该算法是冲破二次时间屏障的第一批算法之一,不过,直到它最初被发现的若干年后才证明了它的亚二次时间界。它通过比较相距一定间隔的元素来工作;各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。由于这个原因,希尔排序有时也叫做缩减增量排序(diminishing increment sort)。
...
分类:
编程语言 时间:
2015-08-20 22:39:28
阅读次数:
318
java八大经典算法:冒泡、选择、快速、插入、希尔、堆、归并、基数
1.算法实现类
package com.algorithm;
/**
*
* @Title: BubbleSort.java
* @Copyright: Copyright (c) 2005
* @Description:
*
* JAVA六大经典算法
* ...
分类:
编程语言 时间:
2015-08-19 16:44:21
阅读次数:
210
排序:将一连串记录按照关键字的大小(从大到小或从小到大)进行排列。
稳定性:如果两个大小相同的关键字的相对位置在排序前和排序后是一样的(Ai等于Aj,排序前Ai 在Aj的前面,排序后Ai 还是在Aj的前面),那么这种算法就是稳定的。
稳定的排序算法有:冒泡排序、直接插入排序、归并排序、基数排序
不稳定的排序算法有:选择排序、快速排序、希尔排序、堆排序
冒泡排序:...
分类:
编程语言 时间:
2015-08-17 12:06:36
阅读次数:
194
13. 蛤蟆的数据结构进阶十三排序实现之希尔排序法
本篇名言:“一个人光溜溜的到这个世界来 ,
最后光溜溜的离开这个世界而去 ,
彻底想起来 , 名利都是身外物 ,
只有尽一人的心力 , 使社会上的人多得他工作的裨益 ,
是人生最愉快的事情。--邹韬奋”
下面是希尔排序法了。
欢迎转载,转载请标明出处:
1. 希尔排序
希尔排序(ShellSort)...
分类:
编程语言 时间:
2015-08-16 21:26:31
阅读次数:
145
插入排序是一类借助'插入'进行排序的算法,主要思想:每次将一个待排序的记录按其关键码大小插入到一个已经排好序的有序序列中,直到全部记录排好序。一、直接插入排序直接插入排序是插入排序最简单的算法,类似于玩纸牌时整理手中纸牌的过程。基本思想:依次将待排序序列中的每一个记录插入到一个已经排好序的序列中,直...
分类:
编程语言 时间:
2015-08-16 18:07:21
阅读次数:
151