博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序算法 学习
阅读量:4981 次
发布时间:2019-06-12

本文共 800 字,大约阅读时间需要 2 分钟。

排序算法种类及应用场景:

插入排序  很少的元素或几乎有序的元素

堆排序   关注最坏情况

快速排序  希望能够得到一个好的平均情况下性能

桶排序   元素是从一个密集集合中抽取出

 

插入排序

它的原理其实很简单。你一定有这样的经历,你在摸牌的时候,你一定是边摸牌边理排。那么你是怎么理的呢?我是按顺序来的,摸到一张,就插到相应的位置中。这里的插入法就是这个原理。

 

堆排序

堆排序主要是将数组看成二叉树,通过二叉树的比较,每次将最大的排到最前面,然后将最大的排到最后,这样的话最大的已经排好。然后剩下的再进行递归,最后能得到有序的数据。

 

快速排序

我把它理解为中值排序的升级版,主要是中值排序是需要左右长度相等,而在快速排序中,对于左右两个数组要求没有那么高。

 

中值排序

将需要排序的数组左右等分,要求左边的值始终比最中间的值要小,右边的值始终比最中间的值要大,然后递归。

 

计数排序

用于数组很长,设为n,但是数值只有那么几个,设为m,若m<<n,那么可以用计数排序,它的复杂度为O(n)。

它先是创建一个长度为m的数组,然后进行两次遍历,在第一次遍历中,计算数值出现的次数;然后第二次是遍历新建的那个数组,利用计数值,将原来的数组重写。

 

选择排序

这是在我一开始学习c语言的时候,经常会使用的一个排序例子。不过它在这些算法中效率应该是最低的。

 

在erlang中,它对于快速排序只需要很少的语句就可以实现:

qsort([ ]) -> [ ];qsort([ Pivot | T ]) ->    qsort([ X || X<- Pivot, X < Pivot ])    ++ Pivot    ++ qsort([ X || X <- Pivot, X >= Pivot ]).

 

 

转载于:https://www.cnblogs.com/shouchengcheng/p/3636468.html

你可能感兴趣的文章
宏定义
查看>>
笔记:git基本操作
查看>>
生成php所需要的APNS Service pem证书的步骤
查看>>
HOT SUMMER 每天都是不一样,积极的去感受生活 C#关闭IE相应的窗口 .
查看>>
optionMenu-普通菜单使用
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
查看>>
Ognl中“%”、“#”、“$”详解
查看>>
我对应用软件——美团的看法
查看>>
struts2.x + Tiles2.x读取多个xml 配置文件
查看>>
表单校验之datatype
查看>>
python第六篇文件处理类型
查看>>
ubuntu16系统磁盘空间/dev/vda1占用满的问题
查看>>
grid网格布局
查看>>
JSP常用标签
查看>>
九涯的第一次
查看>>
处理器管理与进程调度
查看>>
向量非零元素个数_向量范数详解+代码实现
查看>>
java if 用法详解_Java编程中的条件判断之if语句的用法详解
查看>>
matlab sin函数 fft,matlab的fft函数的使用教程
查看>>
mysql sin() 函数
查看>>