您的位置:首页 > Web前端 > JavaScript

排序—直接排序(js实现)

2016-01-12 22:08 671 查看
直接排序,将一个记录插入到一个已经排好序的有序表中,从而得到一个新的有序表,时间复杂度为:n2n^2

function StraightInsertSort (arr) {
var i, j, current, len;
for (i = 1, len = arr.length; i < len; i++) {
j = i - 1;
current = arr[i];
while (j >= 0 && arr[j] > current) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = current;
}
}


Shell插入排序(缩小增量排序法),利用这种写法可以显著的优点在于多个cpu并行处理数据的时候,时间复杂度为:n2n^2,这种排序方法就是对直接插入排序方法进行优化,也就是首先对整个数组进行分组(第一次分组,每个数组内只含有两个元素),一次每次对分组数除以2,由于不存在使用同一数据的情况,所以可以并行处理数据。

// Shell为私有函数,后续博客会有对整个Sort类的实现
function Shell (delta, arr) {
var i, j, current, len;
for (i = delta, len = arr.length; i < len; i++) {
j = i - delta;
current = arr[i];
while (j >= 0 && arr[j] > current) {
arr[j + delta] = arr[j];
j = j - delta;
}
arr[j + delta] = current;
}
}
function ShellInsertSort (arr) {
var delta;  // delta为分组数
for (delta = arr.length / 2; delta >= 1; delta /= 2) {
Shell(delta, arr);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: