排序算法
独L无二
一位颇为清高的女程序媛
展开
-
快速排序
算法思想:从数组中抽出一个元素作为基数v(我们称之为划界元素),一般是取第一个、最后一个元素或中间的元素 将剩余的元素中小于v的移动到v的左边,将大于v元素移动到v的右边 对左右两个分区重复以上步骤直到所有元素都是有排序好。方法一:int Partition(int data[],int low,int high){ int first=low,last=high; ...原创 2019-07-22 12:19:31 · 98 阅读 · 0 评论 -
十种排序算法
1.常见算法分类十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:交换类排序(快速排序和冒泡排序)、插入类排序(简单插入排序和希尔排序)、选择类排序(简单选择排序和堆排序)、归并排序(二路归并排序和多路归并排序);(2)线性时间非比较类排序:计数排序、基数排序和桶排序。总结:(1)在比较类排序中,归并排序号称最快,其次是快速排序和堆排序,两者不相伯仲,但是有一点需要注意,数据初始排序状态对堆排序不会产生太大的影响,而快速排序却恰恰相反。(2)线性时间非比较类排序一...转载 2020-08-06 21:26:16 · 254 阅读 · 0 评论 -
什么是堆排序?
开门见山,本文讲述堆排序。就我自身对于排序的了解来看,其实堆排序是诸多排序中最难写的,光是理解起来都有点费劲,本文旨在于用通俗易懂的话,把堆排序娓娓道来。下面,开始!1:堆毫无疑问,排序两个字没必要去死磕,这里的重点,在于排序的方式,堆排序,就是以堆的形式去排序,毫无疑问,了解堆很重要。那么,什么是堆呢?这里,必须引入一个完全二叉树的概念,然后过渡到堆的概念。上图,就是一个完全二叉树,其特点在于:从作为第一层的根开始,除了最后一层之外,第N层的元素个数都必须是2的N次方;转载 2020-08-07 14:15:43 · 7130 阅读 · 1 评论 -
什么是归并排序?
归并排序是一种效率较高的排序方法,它分为拆分和合并两大部分,先拆后合。拆分,就是将一堆无序的数拆成单个,方便合并。合并,就是将拆分好的数按照排序规则再拼凑起来。详细解释请看下图:拆分:合并:看完这两幅图你应该明白了,归并排序原来就是将一堆数字分开,再合成有序的数列其实,这就是分治的思想,将大问题化小问题,将每个最小的问题处理好,合并起来大问题也就处理好了~#include <iostream>using namespace std;void merg.原创 2020-08-07 16:15:39 · 4101 阅读 · 0 评论 -
什么是计数排序?
计数排序(Count Sort)是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。计数排序的思想是在给定的一组序列中,先找出该序列中的最大值和最小值,从而确定需要开辟多大的辅助空间,每一个数在对应的辅助空间中都有唯一的下标。找出序列中最大值和最小值,开辟Max-Min+1的辅助空间 最小的数对应下标为0的位置,遇到一个数就给对应下标处的值+1,。原创 2020-08-07 16:48:05 · 2661 阅读 · 0 评论 -
什么是基数排序?
基数排序(Radix Sort)是桶排序的扩展,它的基本思想是:将整数按位数切割成不同的数字,然后按每个位数分别比较。具体做法是:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。通过基数排序对数组{53, 3, 542, 748, 14, 214, 154, 63, 616},它的示意图如下:在上图中,首先将所有待比较树脂统一为统一位数长度,接着从最低位开始,依次进行排序。按照个原创 2020-08-07 18:10:39 · 12948 阅读 · 1 评论 -
什么是桶排序?
桶排序也是分配排序的一种,但其是基于比较排序的,这也是与基数排序最大的区别所在。思想:桶排序算法想法类似于散列表。首先要假设待排序的元素输入符合某种均匀分布,例如数据均匀分布在[ 0,1)区间上,则可将此区间划分为10个小区间,称为桶,对散布到同一个桶中的元素再排序。要求:待排序数长度一致。排序过程:(1)设置一个定量的数组当作空桶子;(2)寻访序列,并且把记录一个一个放到对应的桶子去;(3)对每个不是空的桶子进行排序。(4)从不是空的桶子里把项目再放回原来的序列中。#...原创 2020-08-07 18:44:53 · 13716 阅读 · 4 评论 -
十种排序算法总结
排序方式 排序算法 稳定性 平均时间复杂度 空间复杂度 插入排序 直接插入排序 稳定 O(n2) O(1) 希尔排序 不稳定 O(nlogn) O(1) 选择排序 直接选择排序 不稳定 O(n2) O(1) 堆排序 不稳定 O(nlogn) O(1) 交换排序 冒泡排序 稳定 O(n2...原创 2020-08-07 19:44:32 · 382 阅读 · 0 评论 -
超赞常见排序算法图解
常见排序算法及其时间复杂度一、内部排序: 在一个排序工作的执行过程中,如果待排序的记录全部保存在内存,这种工作就称为内排序;针对外存(磁盘、磁带等)数据的排序工作称为外排序。内排序中的归并排序算法是大多数外排序算法的基础。 在考虑算法时,最基本的问题是其时间和空间复杂度。为了在某种合理的抽象层次上考虑它们的时间复杂度和空间复杂度,需要确定关注的基本操作,以其作为时间单位,时间复杂性反映排序过程中这个(或这些)操作的执行次数。还需确定某种抽象的空间单位。 现在要做的是数据记录排序,而且基于关转载 2020-08-26 17:03:21 · 703 阅读 · 0 评论