【排序算法总结】
MISAYAONE
拒绝一切形式的代考,替考行为!!!本人所写题库均搜集于互联网。
展开
-
C++ 希尔排序算法的实现与改进(含笔试面试题)
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待原创 2017-03-31 09:25:16 · 3739 阅读 · 2 评论 -
C++ 比较排序算法总结分析
比较排序算法的总结(此表格来源于网络):比较排序算法(Comparison Sorts)CategoryNameBestAverageWorstMemoryStability 插入排序 (Insertion Sorts) 插入原创 2017-03-25 09:37:30 · 1866 阅读 · 0 评论 -
C++ 冒泡排序算法的实现与改进(含笔试面试题)
冒泡排序(Bubble sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法步骤:1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。2)对每一对相邻元原创 2017-03-25 09:41:44 · 5415 阅读 · 4 评论 -
C++ 插入排序算法的实现与改进(含笔试面试题)
插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。简单小tips:假设一个数列:1、2、5、3。插入排序的思想就是从1开始每次向前遍历:2比1大,为有序5比2大,5比1大,为有序3比5小,无序,交换,交换之后3与2比,3与1比有序结果为 :1、2、3、5算法步骤:1)将第一待排序序原创 2017-03-28 09:18:24 · 1708 阅读 · 0 评论 -
C++ 选择排序算法的实现与改进(含笔试面试题)
选择排序(Selection sort)也是一种最简单直观的排序算法。算法步骤1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置2)再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。3)重复第二步,直到所有元素均排序完毕。、实现代码:/************************************原创 2017-03-28 09:32:57 · 2355 阅读 · 6 评论 -
C++ 归并排序算法的实现与改进(含笔试面试题)
归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。算法步骤:1:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列2:设定两个指针,最初位置分别为两个已经排序序列的起原创 2017-03-30 09:18:25 · 6934 阅读 · 5 评论 -
C++ 桶排序算法的实现与改进(含笔试面试题)
桶排序的算法思想:是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是比较排序,他不受到 O(n log n) 下限的影响。简单来说,就是把数据分组,放在一个个的桶中,然后对每个桶里面的在进行排序。(桶本身是有原创 2017-03-30 09:20:46 · 5341 阅读 · 3 评论 -
C++ 计数排序算法的实现与改进(含笔试面试题)
计数排序局限性比较大,算法思想:假定输入是有一个小范围内的整数构成的(比如年龄等),利用额外的数组去记录元素应该排列的位置,思想比较简单。计数排序是典型的不是基于比较的排序算法,基于比较的排序算法最少也要O(nlogn),有没有可能创造线性时间的排序算法呢?那就是不基于比较的排序算法;如果数组的数据范围为0~100,则很适合此算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数原创 2017-03-30 09:23:36 · 2452 阅读 · 0 评论 -
C++ 堆排序算法的实现与改进(含笔试面试题)
堆排序(Heap sort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以用到上一次的排序结果,所以不像其他一般的排序方法一样,每次都要进行n-1次的比较,复杂度为O(nlogn)。这里先说明以下几个基本概念:完全二叉树:假设一个二叉树有n层,那么如果第1到n-1层的每个节点都原创 2017-03-31 09:21:29 · 13239 阅读 · 1 评论 -
C++ 快速排序算法的实现与改进(含笔试面试题)
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n^2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治法(Divide and conquer)策略来把一个串行原创 2017-04-01 09:31:35 · 2630 阅读 · 0 评论