插入排序
<script>
/*
核心思想:将无序区的第一个元素,插入到有序区的合适的位置。
*/
function random(min,max){
~~(Math random()*(max-min)+min);
}
function randomArray(len,min,max){
var arr=[];
for(var i=0; i<len; i++){
arr[i]=random(min,max);
}
return arr;
}
//定义方法,做插入排序
function insterSort(arr){
if(!Array.isArray(arr))
return ;
const LEN=arr.length;
if(LEN===0)
return;
//外层循环控制趟数。 i还用来代表无序区的第一个元素的索引。
for(var i=1; i<LEN; i++){
//备份无序区的第一个元素。
var temp=arr[i];
//内层循环负责第 i 趟的有序区的元素的比较和移动。
//j逆序取到有序区的所有的元素。
for(var j=i-1; j>=0;j--){
//有序区的遍历的元素比待插入的元素大。
if(arr[j]>temp){
//后移动元素
arr[j+1] = arr[j];
}
else{
break;
}
}
//将备份的数据,插入到合适的位置
arr[j+1] = temp;
}
}
/* ***或者***
//外层循环控制趟数。i还用来代表无序区的第一个元素的索引。
for(var i=1; i<LEN; i++){
//备份无序区的第一个元素
var temp = arr[i];
//内层循环负责第i趟的有序区的元素的比较和移动。
//j逆序取到有序区的所有的元素。
for(var j=i-1; j>=0 && arr[j+1]>temp; j--){
//后移动元素
arr[j+1] = arr[j];
}
//将备份的数据,插入到合适的位置
arr[j+1] = temp;
}
*/
}
//测试
(function(){
var array=randomArray(10,0,100);
consol.log(array);
//定一个延时 排序
setTimeout(function(){
insertSort(array);
consloe.log(array);
},1000);
})();
</script>