【JavaScript算法】---插入排序
一、什么叫做插入排序法
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法
二、核心
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序。 插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中
插入排序的原理其实很好理解,可以类比选择排序。选择排序时在两个空间进行,等于说每次从旧的空间选出最值放到新的空间,而插入排序则是在同一空间进行
三、思路
从第二位数字开始,每一个数字都试图跟它的前一个比较并做交换,并重复这个动作。直到前一个数字不存在或比它小或者相等的时候停下来
四、代码
var arr = [19,3,22,7,55,9,3,8] var temp; for(var i=1;i<arr.length;i++){ var index = i; while(index-1>=0 && arr[index - 1] >arr[index]){ [arr[index],arr[index - 1]] = [arr[index - 1],arr[index]] index-- } } for(var i=1;i<arr.length;i++){ var index = i; while(index-1>=0 && arr[index - 1] >arr[index]){ temp = arr[index]; arr[index] = arr[index-1]; arr[index-1] = temp; index-- } }