2016年12月4日

堆排序

摘要: /* * 堆排序 有2中实现方式: 1. 将数组调整为最小堆O(n) 在不断地删除一个元素 调整为最小堆。 最后将有序数组复制回 A[] 空间复杂度为O(n) 时间复杂度O(n*logn). 2. 还有更好的算法 思路为: 1.先调整为最大堆 将堆顶元素和最后一个元素交换 2.在对剩下的元素重复操作1. 空间复杂度为O(1) 时间复杂度为O(n*l... 阅读全文

posted @ 2016-12-04 23:36 于无声出听惊雷 阅读(246) 评论(0) 推荐(0)

希尔排序

摘要: /* * 希尔排序(在具有几万组数据量排序时有较好的表现~) * 1.希尔排序的整体时间复杂度与增量序列的选取有关,目前没有统一的最优增量序列。 * 2.Sedgewick增量序列:{1,5,19,41,109,。。} 按照 9*4^i-9*2^i+1或4^i-3*2^i+1进行选取。 猜想时间复杂度: 平均:O(n^6/7) 最坏: O(n*4/3).. */ #include ... 阅读全文

posted @ 2016-12-04 16:48 于无声出听惊雷 阅读(361) 评论(0) 推荐(0)

简单排序

摘要: /* * 简单排序包括了:冒泡排序和插入排序 * 简单排序都需要扫描一遍整个数组 而且还有需要调整I个逆序对 故时间复杂度为O(n + I) * 定理1:任意N个元素组成的序列平均有 N * (N-1) / 4个逆序对 * 定理2: 任何以交换相邻2个元素来排序的算法 其时间复杂度为Ω(n^2). 所以要提高算法的效率,必须: 1.每次消去不止一个逆序对 2.每次交换... 阅读全文

posted @ 2016-12-04 09:42 于无声出听惊雷 阅读(162) 评论(0) 推荐(0)

导航