第一部分 基础知识 第1章 算法在计算中的作用 第2章 算法基础 第3章 函数的增长 第4章 分治策略 第5章 概率分析和随机算法 第二部分 排序和顺序统计量 第6章 堆排序 第7章 快速排序 第8章 线性时间排序 第9章 中位数和顺序统计量 第三部分 数据结构 第10章 基本数据结构 第11章 散 ...
分类:
编程语言 时间:
2017-09-27 10:07:45
阅读次数:
541
对n较大的排序记录。一般的选择都是时间复杂度为O(nlog2n)的排序方法。 时间复杂度来说: (1)平方阶(O(n2))排序 各类简单排序:直接插入、直接选择和冒泡排序;(2)线性对数阶(O(nlog2n))排序 快速排序、堆排序和归并排序;(3)O(n1+§))排序,§是介于0和1之间的常数。 ...
分类:
编程语言 时间:
2017-09-26 23:46:06
阅读次数:
335
说在前面最近一年太忙,博客长草了。近日用Python实现了常用排序算法,供大家参考。Java版本排序算法及优化,请看以前的文章。《排序算法之简单排序(冒泡、选择、插入)》《排序算法(二)堆排序》1、排序概念这里不再赘述,请参看前面2篇文章2、简单排序之冒泡法Python实现及..
分类:
编程语言 时间:
2017-09-26 10:44:45
阅读次数:
281
今天早上起来完成了一个完整的基于二叉堆实现的优先队列,其中包含最小优先和最大优先队列。 实际上上篇也说了优先队列的特性,通过建堆和堆排序操作,我们就已经看到了这种数据结构中的数据具有某种优先级别,要么非根节点大于他的子节点,要么就相反,在最大优先队列中最大优先级别就是指节点值最大的数据为根节点,每次 ...
分类:
其他好文 时间:
2017-09-26 10:06:11
阅读次数:
241
第一章 概 论 1.数据:信息的载体,能被计算机识别、存储和加工处理。 2.数据元素:数据的基本单位,可由若干个数据项组成,数据项是具有独立含义的最小标识单位。 3.数据结构:数据之间的相互关系,即数据的组织形式。 它包括:1)数据的逻辑结构,从逻辑关系上描述数据,与数据存储无关,独立于计算机; 2 ...
分类:
其他好文 时间:
2017-09-25 13:10:40
阅读次数:
205
堆排序 堆节点的访问 通常堆是通过一维数组来实现的。在数组起始位置为0的情形中: 父节点i的左子节点在位置(2*i+1); 父节点i的右子节点在位置(2*i+2); 子节点i的父节点在位置floor((i-1)/2); 堆的操作 在堆的数据结构中,堆中的最大值总是位于根节点(在优先队列中使用堆的话堆 ...
分类:
编程语言 时间:
2017-09-25 11:30:15
阅读次数:
237
选择排序是每次从序列中挑出一个最小的数字放在开始位置,依次往后即可,如何找到最小的元素可以有两种方法。 1、简单选择排序,就是直接找了,每次找到最小那个放在起始位置。 2、堆排序,在二叉树中执行,要求每个节点都比左右节点大,整个树的根节点就是最大的,然后将根节点与最后一个节点调换位置,并重新排列,这 ...
分类:
编程语言 时间:
2017-09-24 14:31:33
阅读次数:
191
转载自http://blog.csdn.net/qy1387/article/details/7752973 分类: 1)插入排序(直接插入排序、希尔排序)2)交换排序(冒泡排序、快速排序)3)选择排序(直接选择排序、堆排序)4)归并排序5)分配排序(基数排序)所需辅助空间最多:归并排序所需辅助空间 ...
分类:
编程语言 时间:
2017-09-23 21:21:38
阅读次数:
191
排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码: / /使用快速排序方法对a[ 0 :n- 1 ]排序 从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该 ...
分类:
编程语言 时间:
2017-09-23 20:13:09
阅读次数:
864
堆排序做的,没有全部排序,找到第k个就结束 ...
分类:
编程语言 时间:
2017-09-21 22:24:07
阅读次数:
195