常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。这里主要介绍快速排序。
![](https://img.haomeiwen.com/i3236353/b7a15b77c36dd246.png)
1. 快速排序算法介绍
1.1 算法描述
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用。快速排序是一种既不浪费空间又可以快一点的排序算法。
1.2 算法步骤
①先从数列中取出一个数作为“基准”。
②分区过程:将比这个“基准”大的数全放到“基准”的右边,小于或等于“基准”的数全放到“基准”的左边。
③再对左右区间重复第二步,直到各区间只有一个数。
1.3 算法实现
![](https://img.haomeiwen.com/i3236353/b386b6d3ac9a05d3.png)
2. 选择排序算法介绍
2.1 算法描述
选择排序是一种简单直观的排序算法,无论什么数据进去都是O(n2) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。通俗来说就是你们中间谁最小谁就出列,站到队列的最后边,然后继续对着剩余的无序数组说你们中间谁最小谁就出列,站到队列的最后边,一直到最后一个,继续站到最后边,这样数组就有了顺序,从小到大。
2.2 算法步骤
①在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
②从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
③重复第二步,直到所有元素均排序完毕。
2.3 算法实现( 只写了js . 因为我是学前端的 )
![](https://img.haomeiwen.com/i3236353/84b957164acdeb65.png)
3. 希尔排序算法介绍
3.1 算法描述
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
①插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;
②但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位;
希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录基本有序时,再对全体记录进行依次直接插入排序。
![](https://img.haomeiwen.com/i3236353/3494f186ac9d459a.png)
3.2 算法步骤
① 选择一个增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;
② 按增量序列个数 k,对序列进行 k 趟排序;
③ 每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为 1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。
3.3 算法实现
![](https://img.haomeiwen.com/i3236353/c344812cf55fc95f.png)
不能打代码真的很烦 , 算法学的没脾气了 , 加油 !
https://juejin.im/entry/58759e79128fe1006b48cdfd
详细的堆栈/队列/链表 掘金上面这个讲的挺好的,可以复习;
网友评论