![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
gqkmiss
前端
展开
-
基本排序算法:希尔排序
基本排序算法:希尔排序 希尔排序 959年Shell发明; 第一个突破O(n^2)的排序算法;是简单插入排序的改进版;它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序 原理 利用步长来进行两两元素比较,然后缩减步长在进行排序。 说明:希尔排序的实质是分组插入排序,该方法又称缩小增量排序。该方法的基本思想是:先将整个待排元素序列分割为若干个子序列(由相隔某个‘增量’的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,带这个序列中的元素基本有序(增量足够小)时,再对全原创 2020-06-11 15:21:18 · 255 阅读 · 0 评论 -
基本排序算法:归并排序
基本排序算法:归并排序 归并排序 和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。 原理 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。 示意图 实现方法 functi原创 2020-06-11 15:17:17 · 185 阅读 · 0 评论 -
基本排序算法:快速排序
基本排序算法:快速排序 快速排序 快速排序,一听到这个名字你就知道它存在的意义,就是快,而且效率高! 它是处理大数据最快的排序算法之一了。 基本思想 通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序 原理 选择一个基准,将比基准小的放左边,比基准小的放在右边(基准处在中间位置) 示意图 实现方法 function quickSort(arr) { //如果数组<=1,则直接返回 if (ar原创 2020-06-11 15:09:31 · 233 阅读 · 0 评论 -
基本排序算法:插入排序
基本排序算法:插入排序 插入排序 插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。当然,如果你说你打扑克牌摸牌的时候从来不按牌的大小整理牌,那估计这辈子你对插入排序的算法都不会产生任何兴趣了…哈哈???? 原理 从第二个元素开始(假定第一个元素已经排序了),取出这个元素,在已经排序的元素中从后向前进行比较,如果该元素大于这个元素,就将该元素移动到下一个位置,然后继续向前进行比较,直到找到小于或者等于该元素的位置,将该元素插入原创 2020-06-11 14:51:03 · 119 阅读 · 0 评论 -
基本排序算法:选择排序
基本排序算法:选择排序 选择排序 表现最稳定的排序算法之一(这个稳定不是指算法层面上的稳定),因为无论什么数据进去都是O(n²)的时间复杂度…所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。理论上讲,选择排序可能也是平时排序一般人想到的最多的排序方法了吧。 原理 首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,直到排序完毕 示意图 实现方式 function selectionSort(arr) {原创 2020-06-11 14:43:59 · 179 阅读 · 0 评论 -
基本排序算法:冒泡排序
基本排序算法:冒泡排序 冒泡排序 冒泡排序是最慢的排序算法之一, 也是最容易实现的排序算法.使用这种算法进行排序时,数据值会像气泡一样从数组的一端漂浮到另一端,所以称之为冒泡排序.假设要对数组按照升序排列,较大的值会浮动到数组的右侧,较小值会浮到左侧. 原理 简单来说就是相邻两个元素进行对比,按照你需要的排序方式(升序or降序)进行位置替换,替换时需要额外一个变量当作中间变量去暂存值。 冒泡排序动图演示: 实现方式: 一、双重for循环 两两对比进行替换 function bubbleSort(arr)原创 2020-06-11 14:25:00 · 238 阅读 · 0 评论