堆排序是一种不稳定排序,其中构建初始堆经推导复杂度为O(n),在交换并重建堆的过程中,需交换n-1次,而重建堆的过程中,根据完全二叉树的性质,[log2(n-1),log2(n-2)...1]逐步递减,近似为nlogn 详情 http://www.cnblogs.com/chengxiao/p/61 ...
分类:
编程语言 时间:
2018-07-21 17:08:20
阅读次数:
186
heapify(iterable) 堆排序。 例子: heappop(iterable) 弹出堆排序的第一个元素,即最小值。 例子: hasattr(object,attr) 用于确定对象是否有某个属性,返回bool值,但要注意,该函数会隐藏特性,很可能造成错误无法发现,所以使用时大多数情况都可以用 ...
分类:
编程语言 时间:
2018-07-19 21:24:55
阅读次数:
125
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 示例 2: 说明: 你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。 直接快排就过了。。。。用堆排序的话应该会更快 ...
分类:
编程语言 时间:
2018-07-18 23:24:04
阅读次数:
167
1.快速排序算法 算法步骤 2.堆排序算法 ...
分类:
编程语言 时间:
2018-07-16 01:00:34
阅读次数:
188
摘要: 所谓排序,就是根据排序码的递增或者递减顺序把数据元素依次排列起来,使一组任意排列的元素变为一组按其排序码线性有序的元素。本文将介绍八种最为经典常用的内部排序算法的基本思想与实现,包括插入排序(直接插入排序,希尔排序)、选择排序(直接选择排序,堆排序)、交换排序(冒泡排序,快速排序)、归并排序 ...
分类:
编程语言 时间:
2018-07-15 21:13:45
阅读次数:
210
1. 冒泡排序从第一个元素开始与右侧元素两两比较并交换,直到右侧成为有序部分。 2. 选择排序有序部分在左侧,在剩余元素中找到最小的那个元素,并与剩余元素中第一个元素交换。 3. 插入排序有序部分在左侧,将剩余元素中第一个元素不断向左交换,直到此元素处于有序部分恰当位置。 4. 希尔排序取一个间隔值 ...
分类:
编程语言 时间:
2018-07-12 16:35:10
阅读次数:
156
排序算法,可以分为内部排序和外部排序两大种。这篇文章主要对内部排序进行介绍。内部排序又分为两类,基于比较的非线性时间类,和非比较的线性时间类。前一类又可以分为四种,交换排序(包括冒泡排序和快速排序),插入排序(包括简单插入排序和希尔排序),选择排序(包括简单选择排序和堆排序)以及归并排序;后者主要包 ...
分类:
编程语言 时间:
2018-07-09 19:50:47
阅读次数:
179
要进行堆排序,首先需要将无序序列进行建堆,这里是建的大堆 网上的有些帖子,按照他们给出的堆排序代码和序列,确实能够输出对的排序,但要是输入自己的无序序列或者直接在他们的序列后面添加几个乱序,就出错了。 就自己动手实现了一下,代码如下,给出了每一步的解释和说明: 输出结果为: ...
分类:
编程语言 时间:
2018-07-08 14:35:28
阅读次数:
140
import java.util.Arrays; public class HeapSort { public static void main(String[] args) { int[] a = { 2, 5, 9, 6, 1, 4, 8, 7, 12, 50 }; sort(a); Syste... ...
分类:
编程语言 时间:
2018-07-05 10:17:54
阅读次数:
165