冒泡排序,选择排序,插入排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序,选择排序,插入排序相关的知识,希望对你有一定的参考价值。
从今天开始希望自己的博客可以持续的更新起来,由于本人能力有限,所以有些内容可能会有疏漏或者不全面,希望大家可以指出来,让我们一起学习,一起进步。
今天的内容是最简单的三个排序算法,冒泡排序,选择排序,插入排序,它们的时间复杂度都是O(N^2)。
冒泡排序:首先第一个数与第二个数比较,如果前面的大于后面的就交换两个数,然后第二个与第三个比较,直到比较到最后,此时最后一个数为数组最大值,然后循环次步骤,第二次比较到倒数第二位,这样经过两次循环最后两位就排好了,经过N次循环,数组就拍好了
选择排序:从数组中选择出最小的一个数,交换这个数和数组第一个数,这样第一个数就排好了,然后从第二个数到最后一个数中再选出最小的与第二个数交换,这样操作N次,数组排好顺序。
插入排序:首先比较数组第二个数和第一个数的大小,将小的放到前面。然后让第三个数依次与第二个数和第一个数比较,找到第三个数插入的位置,使得前三个数字有序,然后是第四位,如此循环,直到最后,数排好顺序。
下面上代码:由于我是学习前端的所以代码用javascript语言描述
//冒泡排序 function sortBubble(array){ var length=array.length; var cache; for(var j=length-1;j>0;j--){ for(var i=0;i<j;i++){ if(array[i]>array[i+1]){ cache=array[i]; array[i]=array[i+1]; array[i+1]=cache; } } } return array; }
//选择排序 function sortSelection(array){ var length=array.length; var currentMin,cache; for(var j=0;j<length;j++){ currentMin=j; for(var i=j+1;i<length;i++){ if(array[i]<array[currentMin]) currentMin=i; } cache=array[j]; array[j]=array[currentMin]; array[currentMin]=cache; } return array; }
//插入排序 function sortInsert(array){ var length=array.length; var cache; for(var i=1;i<length;i++){ for(var j=i-1;j>0;j--){ if(array[i]<array[j]){ cache=array[i]; array[i]=array[j]; array[j]=cache; i=j; }else{ break; } } } return array; }
代码都经过我亲自测试,可以完成对数组进行排序
以上是关于冒泡排序,选择排序,插入排序的主要内容,如果未能解决你的问题,请参考以下文章
排序算法学习(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序)
[leetcode]排序算法(冒泡排序,选择排序,插入排序,快速排序,计数排序)
总结:大厂面试常考手撕代码 —— JavaScript排序算法(冒泡排序选择排序插入排序快速排序)
直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚