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

算法总结JS版(二)—— 选择排序(Selection Sort)

2017-10-22 22:09 267 查看
(1)算法简介

选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

(2)算法描述和实现

n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下:

1.初始状态:无序区为R[1..n],有序区为空;
2.第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R[i+1..n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区;
3.n-1趟结束,数组有序化了。

(3)Javascript代码实现

function selectionSort(arr) {
var len = arr.length;
//保存最小数的索引,交换位置时用的中间变量
var minIndex, temp;
//总共需要len-1次,最后一次是最后两个相比,所以少一次
for (var i = 0; i < len - 1; i++) {
//每次开始的第一个数都认为是最小数
minIndex = i;
//从最小数的下一个开始跟minIndex对应的数相比
for (var j = i + 1; j < len; j++) {
//如果当前数小于最小数则更新最小数索引,一直到最后
if (arr[j] < arr[minIndex]) {     //寻找最小的数
minIndex = j;                 //将最小数的索引保存
}
}
//全部比完后找到最小数,交换位置
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
console.log(selectionSort(arr));
//[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]


(4)算法分析

最佳情况:T(n) = O(n2)
最差情况:T(n) = O(n2)
平均情况:T(n) = O(n2)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息