insertion sort

[b]insertion sort[/b]

------
[b]insertion sort 原理[/b]

不断将数据插入已排序的序列,每次插入时,逐个比较,直到找到比自己大的则插入,

时间:o(n^2)
内存:o(1)

------
[b]例子[/b]:

* [b]javascript 代码[/b]

var arr_one = [ 78, 13, 6, 177, 26, 90, 288, 45, 62 ];

/**
* insertion sort (插值排序),时间: o(n^2),内存: 1,
*
* @param inputArr
* @return
*/
function insertionSort(inputArr) {
// 1个临时变量
var tmp;
// 比较次数
var compareCount = 0;
// 移动次数
var moveCount = 0;
// 循环次数
var cycleCount = 0;
forOne: for ( var i = 0; i < inputArr.length; i++) {
cycleCount++;
forTwo: for ( var j = 0; j < inputArr.length; j++) {
cycleCount++;
compareCount++;
if (inputArr[i] <= inputArr[j]) { // 替换值,将 j~i 之间的值后羿一位,
tmp = inputArr[i];
for ( var k = i; k >= j + 1; k--) {
cycleCount++;
inputArr[k] = inputArr[k - 1];
moveCount++;
}
inputArr[j] = tmp;
continue forOne;
}
}
}
alert("输入长度:"+inputArr.length+",\n比较次数:" + compareCount + ",\n移动次数:" + moveCount + ",\n循环次数:" + cycleCount);
return inputArr;
};



* [b]html 代码[/b]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="js/sort_test.js"></script>
</head>
<body>
<input type="button" value="insertion sort" onclick="alert(insertionSort(arr_one));" />
</body>
</html>



------


------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值