<script type="text/javascript">
//插入排序算法(javascript)
//author:Hengda
//2020/1/25
//arr 待排序数组
//mode true 从大到小排列,false 从小到大排列
function insertionSort( arr, mode ){
var i, j, temp, len = arr.length;//len为待排序数组长度 temp为交换变量 i j为控制变量。
//从数组的第二个元素开始逐个往后处理。
for( i = 1; i < len; i++ ){
//将当前被处理元素值记录下来。
temp = arr[ i ];
//以下标倒序逐一比较当前元素位置之前的所有元素,如果比当前元素大,则逐一向后覆盖一个元素。
for( j = i - 1; j >= 0 && ( mode ? arr[ j ] < temp : arr[ j ] > temp ); j-- ){
arr[ j + 1 ] = arr[ j ];
}
//将点前被处理元素的值填入最终空缺的位置即 (j + 1) 注意这个 j 已经被for循环做了-1操作,所以这里需要+1。
arr[ j + 1 ] = temp;
}
//遍历完成后,整个数组即为有序数组。
return arr;
}
//以下为测试代码
//生成n的随机数组成的数组
//n为元素个数
function makeData( n ){
var arr = [];
var i = n;
while( i-- ){
arr.push( Math.floor( Math.random() * n ) );
}
return arr;
}
//生成 10万个数
arr = makeData( 10000 );
arrString = JSON.stringify( arr );
arr1 = JSON.parse( arrString );
console.log("原始数组:");
console.log( arr1 );
console.time( "插入排序-从小到大:" );
arr1 = insertionSort( arr1, false );
console.timeEnd( "插入排序-从小到大:" );
console.log( arr1 );
arr2 = JSON.parse( arrString );
//console.log( arr2 );
console.time( "插入排序-从大到小:" );
arr2 = insertionSort( arr2, true );
console.timeEnd( "插入排序-从大到小:" );
console.log( arr2 );
</script>
Insertion sorting algorithm implementation (javascript language)
Guess you like
Origin blog.csdn.net/one312/article/details/113101588
Recommended
Ranking