插入排序
插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个高效的算法 。
插入排序原理
从数组中第二个元素开始比较前面的元素,如果前的元素大,就把它向后排,以此类推完成排序。
arr = [6,3,2,5,4,1] 是待排序数组;
首先取出数组中第二个元素 3 ,去比较前一个元素 6 ,6 比 3大,所有把6移动到3的位置上,6前面没有元素所以将把 3 插入到 6 位置上;
然后取出数组中第三个元素 2 ,6 比 2 大,将 6 移动到 2 的位置上,比较 3 比 2 大,将 3 移动到 6 的位置上,3前面没有元素所以将2插入到3的位置上;
依次类推,完成整个数组的排序。
代码实现
Array.prototype.insertionSort = function() {
for(let i =1;i<this.length;i++){
let tmp = this[i];
let j = i;
while(j>0){
if(this[j-1] > tmp){
this[j] = this [j-1];
}else{
break;
}
j--;
}
this[j] = tmp;
}
}
时间复杂度
插入排序有两层循环所以其时间复杂度为O(n^2);
算法稳定性
插入排序是稳定的排序算法;