排序
文章平均质量分 74
0909LQ
小陈醋的代码进阶之路
展开
-
堆排序
堆排序: n*log(n)的时间复杂度, 非稳定排序,原地排序。 它的思想是利用的堆这种数据结构,堆可以看成一个完全二叉树,所以在排序中比较的次数可以做到很少。 加上他也是原地排序,不需要申请额外的空间,效率也不错。 堆的重要特点是每一次循环都会建立新的最大或最小堆。 void BuildHeap(int ArrayInput[], int idx, int max转载 2015-07-28 22:49:08 · 425 阅读 · 0 评论 -
归并排序和快速排序的比较
写在前面 1. 本文内容对应《算法导论》(第2版)》第2章和第7章。 2. 比较了归并排序与快速排序之间的不同策略,启发对分治算法的深入思考。 3. 希望本文对您有所帮助,也欢迎您给我提意见和建议。 ----------------------------------------------------转载 2015-07-28 20:58:00 · 920 阅读 · 0 评论 -
归并排序
(一)两路归并排序 时间复杂度:O(nlogn) 平均时间复杂度:O(nlogn) 最差空间复杂度:O(n) 稳定性:稳定 两路归并排序(Merge Sort),也就是我们常说的归并排序,也叫合并排序。它是建立在归并操作上的一种有效的排序算法,归并操作即将两个已经排序的序列合并成一个序列的操作。该算法是采用分治法(Divide and Conquer)的一个非常典型的转载 2015-07-28 17:58:34 · 382 阅读 · 0 评论 -
快速排序C++实现
最近在看《剑指Offer》这本书,也在为找工作做一些准备,今天在书上看到排序在面试当中的重要性,所以下决心要好好搞一下 于是晚上回到实验室看了看《算法导论》中关于快速排序这一块的内容,作者讲的还是蛮详细的,后来借鉴网上的代码实现了一下,写下这篇文章,记录自己的学习过程。 快速排序是一种最坏情况时间复杂度为O(n2)的排序算法,虽然最坏情况时间复杂度很差,但是快速排序通常是在实际排序应用中最好的原创 2015-07-23 22:14:50 · 580 阅读 · 0 评论 -
插入排序C++
插入排序的基本思想是每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。常见的插入排序有插入排序(Insertion Sort),希尔排序(Shell Sort),二叉查找树排序(Tree Sort),图书馆排序(Library Sort),Patience排序(Patience Sort)。下面介绍前两种: (一)直接插入排序 最转载 2015-07-23 22:39:51 · 497 阅读 · 0 评论