初学排序算法,我觉得只需要掌握算法的精髓,没必要把所有算法都实现一遍,下面我会实现一些经典的排序算法。(均采用C++实现) 学习的排序算法包含: 1》插入排序(直接插入排序、希尔排序) 2》选择排序(简单选择排序、堆排序) 3》交换排序(快速排序、冒泡排序) 4》归并排序 5》基数排序 我认为初学者 ...
分类:
编程语言 时间:
2018-01-06 15:51:48
阅读次数:
172
部分内容转自: 作者: dreamcatcher-cx 出处: <http://www.cnblogs.com/chengxiao/> 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在页面明显位置给出原文链接。 预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算 ...
分类:
编程语言 时间:
2018-01-03 19:50:54
阅读次数:
186
一、堆排序算法的基本特性时间复杂度:O(nlgn)...//等同于归并排序最坏:O(nlgn)空间复杂度:O(1).不稳定。 二、堆与最大堆的建立要介绍堆排序算法,咱们得先从介绍堆开始,然后到建立最大堆,最后才讲到堆排序算法。 2.1、堆的介绍 如下图, a),就是一个堆,它可以被视为一棵完全二叉树 ...
分类:
编程语言 时间:
2018-01-01 11:46:41
阅读次数:
177
public static int[] heapSort(int[] arr) { int i; for (i = arr.length / 2; i >= 0; i--) { heapAdjust(arr, i, arr.length - 1); } for (i = arr.length - 1... ...
分类:
编程语言 时间:
2017-12-30 22:39:33
阅读次数:
205
这东西。。。好简单的诶 不过貌似一年前的时候,还没有写博客的习惯 那就来总结一下呗 首先来说大根堆 把大根堆当成一个完全二叉树(这个说法其实不准确) 对于a[i],左儿子为a[i*2]右儿子为a[i*2+1] 也就是说我们已经有一颗树了 然后我们从后往前fix每个节点 fix(x)就是将x放到他该在 ...
分类:
编程语言 时间:
2017-12-25 01:01:35
阅读次数:
144
20162310 《程序设计与数据结构》课程总结 每周作业链接汇总 "第一周作业:" 本章从效率的角度来介绍了我们在软件开发中所要注意的地方 引入了增大函数和大O符号的概念 算法分析师计算机科学的基础课题 处理器速度的提升和内存不能弥补算法效率的差异 "第三周作业:" 查找实在一组项内找到指定目标或 ...
分类:
其他好文 时间:
2017-12-24 16:51:34
阅读次数:
413
题目描述:把k个排序的链表组成的列表合并成一个排序的链表 思路: 1. 使用堆排序,遍历列表,把每个列表中链表的头指针的值和头指针本身作为一个元素放在堆中; 2. 第一步中遍历完列表后,此时堆中最多会有n个元素,n是列表的长度; 3. 当堆不为空,取出堆中的最小值,然后把该值的指针指向下一个元素,并 ...
分类:
编程语言 时间:
2017-12-22 00:37:47
阅读次数:
133
[9, 7, 1, 5][1, 5, 9, 7]1579 ...
分类:
编程语言 时间:
2017-12-21 23:03:39
阅读次数:
195
1)插入排序(从第二个元素开始,依次从剩余元素中选择一个,插入到前面有序的子序列中) 2)快速排序(不是稳定的排序,平均时间复杂度O(nlogn)) 3)归并排序(是稳定的排序算法,时间复杂度O(nlogn)) 4)堆排序(不是稳定的排序,时间复杂度O(nlogn)) 5)计数排序、基数排序、桶排序 ...
分类:
编程语言 时间:
2017-12-20 21:54:33
阅读次数:
193
给公司的同事做了一个算法的分享,这是一些总结的资料。 我只是讲了快速排序、堆排序、归并排序、二分查找等简单的c#实现,蚂蚁算法及算法在生活中的意义! 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比 ...
分类:
编程语言 时间:
2017-12-19 00:50:48
阅读次数:
210