算法详解:
插入排序的基本思想是:将数组的第一个数认为是有序数组,从后往前(从前往后)扫描该有序数组,把数组中其余n-1个数,根据数值的大小,插入到有序数组中,直至数组中的所有数有序排列为止。这样的话,n个元素需要进行n-1趟排序!!!
插入排序的关键点:
1、采用双层循环:时间复杂度也是O(n的平方)
(1)外层循环表示的是排序的趟数,n个数字需要n-1趟,因此,外层循环的次数是n-1次;同时也代表数的位置。
(2)内层循环表示的是每一趟排序的数字。根据插入排序的思想,第i趟排序时,有序数组中的数字就有i个,就需要进行i次比较,因此循环i次。注意采用的是从后往前进行比较。
2、从后往前扫描的时候,如果必须插入的数大于有序数组中当前位置的数,则有序数组中的数和它之后的数均往后移一个位置,否则,把插入的数插入到有序数组中。(稳定排序)
代码:
<script type="text/javascript">
//插入排序
var _ing = function(array) {
var length = array.length,j,temp;
//默认第一项已经排序所以i=1
for(var i = 1; i < length; i++){
temp = array [i];
j = i;
while(j>0&&array[j-1]>temp){
array[j] = array[j-1];
j--
}
array[j] = temp;
}
console.log(array)
}
_ing([4,2,56,7,3,11,8]);
</script>
这是我所学到的,所以我要分享给你们,希望可以帮助到你们。
以上就是我的分享,新手上道,请多多指教(大神勿喷)。