希尔排序的诞生是由于插入排序在处理大规模数组的时候会遇到需要移动太多元素的问题。希尔排序的思想是将一个大的数组“分而治之”,划分为若干个小的数组,以gap来划分,比如数组[1, 2, 3, 4, 5, 6, 7, 8],如果以gap = 2来划分,可以分为[1, 3, 5, 7]和[2, 4, .....
分类:
编程语言 时间:
2015-04-18 17:30:05
阅读次数:
149
希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行...
分类:
编程语言 时间:
2015-04-15 22:55:08
阅读次数:
173
希尔排序 1 //对每列元素进行插入排序 2 void sortInterval(int *arr, int beg, int increment, int len) 3 { 4 int first_unsorted;//第一个未排序的元素 5 int current;//暂存待插入...
分类:
编程语言 时间:
2015-04-13 22:21:50
阅读次数:
141
算法名称 平均情况 最好情况 最坏情况 辅助空间直接插入排序 O(n^2) O(n) O(n^2) O(1)希尔排序 O(nlgn)-O(n^2) O(n^1.3) O(n^2) O(1)起泡排序 O(n^2) O(n) O(n^...
分类:
编程语言 时间:
2015-04-12 15:59:07
阅读次数:
116
package my0410;import java.util.Arrays;public class ShellSort { /** * @param args */ public static void main(String[] args) { // ...
分类:
编程语言 时间:
2015-04-11 22:27:46
阅读次数:
219
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ShellSor.....
分类:
编程语言 时间:
2015-04-11 16:18:04
阅读次数:
109
《算法》第4版作者是Robert Sedgewick 和 Kevin Wayne。 1. 选择排序 选择排序可以说是最简单的排序方法。首先,找到数组中最小的那个元素;其次,将它与数组的第一个元素交换位置(如果第一个元素就是最小元素,那么它就和自己交换);再次,在剩下的元素中找到最小的元素,将它...
分类:
编程语言 时间:
2015-04-10 21:52:26
阅读次数:
164
希尔排序是插入排序的一种更高效的改进版本。它的作法不是每次一个元素挨一个元素的比较。而是初期选用大跨步(增量较大)间隔比较,使记录跳跃式接近它的排序位置;然后增量缩小;最后增量为 1 ,这样记录移动次数大大减少,提高了排序效率。希尔排序对增量序列的选择没有严格规定。
希尔排序最关键的是选对增量,关于增量的选择,建议参考:http://zh.wikipedia.org/wiki/希尔排序 中的步...
分类:
编程语言 时间:
2015-04-08 23:28:09
阅读次数:
267
??
排序算法
排序是将无需的记录序列调整为有序记录序列的一种操作。
包括:冒泡排序,选择排序,堆排序,插入排序,希儿排序,快速排序,归并排序等。
(一)
冒泡排序
基本思想:
每次进行相邻两个元素的比较,如果为逆序时即进行交换,直到没有反序的数据元素为止。
排序过程:
设想被排序的...
分类:
编程语言 时间:
2015-04-03 17:32:47
阅读次数:
231