排序算法 交换排序类:冒泡排序、快速排序 选择排序类:简单选择排序、堆排序 插入排序类:直接插入排序、希尔排序 冒泡排序 冒泡排序(Bubble Sort),排序的基本思想为两两比较小相邻数据的关键字,如果顺序为反则进行交换,直到没有反序的记录为止。 冒泡排序有多种变化,其三种不同实现的代码如下: ...
分类:
编程语言 时间:
2018-07-28 20:37:08
阅读次数:
137
#!/usr/bin/env python # -*- coding: utf-8 -*- import heapq import copy import datetime import random def get_max_heap(heap, size, root): # 在堆中做结构调整使得父... ...
分类:
编程语言 时间:
2018-07-28 16:47:42
阅读次数:
150
选择排序,冒泡排序,快速排序,归并排序,插入排序,希尔排序,计数排序,桶排序,基数排序 以上是一些常用的排序算法。 选择排序 for(int i = 0; i using namespace std; int n; int a[10] = {9, 19, 7, 2, 4, 5, 6, 8, 10, ...
分类:
编程语言 时间:
2018-07-28 12:03:28
阅读次数:
174
文字描述 堆排序中,待排序数据同样可以用完全二叉树表示, 完全二叉树的所有非终端结点的值均不大于(或小于)其左、右孩子结点的值。由此,若序列{k1, k2, …, kn}是堆,则堆顶元素(或完全二叉树的根)必为序列中n个元素的最小值(或最大值)。 若在输出堆顶的最小值之后,使得剩余n-1个元素的序列 ...
分类:
编程语言 时间:
2018-07-27 20:57:19
阅读次数:
171
举个例子,一位数组,从小到大进行排序。 常见的排序,是冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序、基数排序、桶排序等。 1.冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从 ...
分类:
编程语言 时间:
2018-07-26 00:21:57
阅读次数:
238
/*算法思想(以大顶堆为例): 1.将长度为n的待排序的数组进行堆有序化构造成一个大顶堆 2.将根节点与尾节点交换并输出此时的尾节点 3.将剩余的n -1个节点重新进行堆有序化 4.重复步骤2,步骤3直至构造成一个有序序列*/ ...
分类:
编程语言 时间:
2018-07-22 15:14:44
阅读次数:
232
通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn)~O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序 另一种是非比较排序,时间复杂度可以达到O(n),主要有:基数排序,基数排序,桶 ...
分类:
编程语言 时间:
2018-07-21 21:33:03
阅读次数:
164
堆排序是一种不稳定排序,其中构建初始堆经推导复杂度为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