堆排序
来源:互联网 发布:mssql备份数据库命令 编辑:程序博客网 时间:2024/06/03 21:21
堆排序是一种效率很高的排序方法,尤其是在大量数据排序方面。
1、降序序排列
例如:将{10,16,18,12,11,13,15,17,14,19}按照降序排列。首先要明白,如果要将一组数据按照降序排列,则我们要借助最小堆来实现。具体的方法如下:
首先将这组数据建成最小堆:
现在a[0]就是最小的元素,我们将a[0]与最后一个元素进行交换,然后再将前9个数建堆。
将a[0]与a[8]交换,如下图:
重复上述操作,直到a[0]与a[0]交换的时候就停止,这时就已经排好序了。
时间复杂度:
第一次建堆的时间复杂度:O(N*lgN)。
每次调整的时间复杂度是O(lgN),总共有N次,即:O(N*lgN);
所以:
堆排序的时间复度:O(N*lgN)
2、升序排列。
同理,升序排列要借助于最大堆。
完整代码:
阅读全文
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- HDU1075 What Are You Talking About【MAP】
- Smarty与自定义Smarty
- Hadoop streaming编写mapper与reducer
- Tips1 让日志如你所想
- Java实现Container With Most Water
- 堆排序
- Gym
- Eclipse
- 正则表达式常用技巧1-通配匹配符改任意匹配符
- 【撸码caffe四】 solver.cpp&&sgd_solver.cpp
- C++ RALL机制详解
- 扩展阅读 传统文化中的智慧
- zookeeper
- 多校1 K KazaQ's Socks