摘要: 快速排序,平均运行时间O(N log N),最坏运行时间O(N^2)。 我觉得先看Python版的快排算法(http://www.cnblogs.com/fcyworld/p/6160558.html)比较容易理解。 整体思路: 首先从数组中选出一个值pivot,然后依据这个值pivot,把数组分成 阅读全文
posted @ 2016-12-13 23:54 wilderness 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 归并排序运行时间O(N log N),但是由于需要线性附加内存,所以很少用于主存排序。 算法核心在于以下三条语句,分治递归,分别对左半边和右半边的数组进行排序,然后把左右半边的数组一一进行比较放入数组 下面是代码,主要包括三个函数: 阅读全文
posted @ 2016-12-13 23:08 wilderness 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 堆排序,时间复杂度O(N log N),实际使用中慢于使用Sedgewick增量的增量排序。 大致思路: 1.先在数组中建堆,如果是增量排序,则需要建一个大堆 2.每循环一次,把最大的数,也就是nums[0],放入堆尾,同时把nums[0]下滤 阅读全文
posted @ 2016-12-13 22:20 wilderness 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 希尔排序(ShellSort),缩小增量排序,使用希尔增量时最坏运行时间O(n^2),不同的增量会对运行时间产生显著影响。 阅读全文
posted @ 2016-12-13 21:46 wilderness 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 今晚更新几个排序算法 插入排序,时间复杂度O(n^2),从前往后遍历,每遍历到一个值的时候,其前面的所有值已经完成排序,把这个值插入适当位置 阅读全文
posted @ 2016-12-13 21:30 wilderness 阅读(253) 评论(0) 推荐(0) 编辑