文章转载自http://www.cnblogs.com/chengxiao/ 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会以图 ...
分类:
编程语言 时间:
2017-07-18 23:09:01
阅读次数:
213
一、直接插入排序 对于一个有序的序列。不断将后面的元素插入前面的有序序列。保持序列继续有序。 对于直接插入排序的思路:将要排序的元素保存。然后逐个和其前面的元素进行比較。假设前面的元素比其大,则将前面的元素后移一个。 时间复杂度为n*n void insert_sort(int a[],int n) ...
分类:
编程语言 时间:
2017-07-13 16:15:39
阅读次数:
125
直接选择排序每一趟排序都会从未排序的序列中选择出最小的元素来,然后跟未排序序列的第一个元素交换。这样经过n-1趟排序后,每趟排序选择出的 最小元素便成了有序的序列。 算法实现如下: 直接选择排序的时间复杂度为O(n2),空间复杂度为O(1)。直接选择排序同样是一种不稳定的排序算法(不稳定的排序算法有 ...
分类:
编程语言 时间:
2017-07-11 11:13:51
阅读次数:
159
本文总结了冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序 6 大常见排序算法,并使用图文直观的感受排序算法的过程细节。 ...
分类:
编程语言 时间:
2017-07-09 16:07:59
阅读次数:
247
高级排序比简单排序要快的多,简单排序的时间复杂度是O(N^2),希尔(shell)排序的是O(N*(logN)^2),而快速排序是O(N*logN)。 说明:下面以int数组的从小到大排序为例。 希尔(shell)排序 希尔排序是基于插入排序的,首先回顾一下插入排序,假设插入是从左向右执行的,待插入 ...
分类:
编程语言 时间:
2017-07-09 10:40:40
阅读次数:
143
大学上过计算机原理课程的朋友都接触过补码这个概念,不过当时书上所教授的内容都是以二进制作为前提,即所谓的2的补码(2's Complement)。近来看TCP/IP Volume 1时,又接触到“1的补码”这个概念,忽然发现其实还不太明白补码到底是什么意思,故查阅资料记录之。 资料来源:维基百科 术 ...
分类:
其他好文 时间:
2017-07-08 00:22:07
阅读次数:
292