算法总结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代码实现
(4)算法分析
最佳情况:T(n) = O(n2)
最差情况:T(n) = O(n2)
平均情况:T(n) = O(n2)
选择排序(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)
相关文章推荐
- 算法:冒泡排序(Bubble Sort)、插入排序(Insertion Sort)和选择排序(Selection Sort)总结
- 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)
- [算法] 选择排序 Selection sort
- 排序算法总结之选择排序 Selection Sort
- java基本算法总结(冒泡排序、选择排序、插入排序)
- JS相关的排序算法总结
- 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)
- 经典算法(6)- 选择排序(Selection Sort)
- Linux C一站式学习习题答案11.2 实现选择排序(Selection Sort)算法
- Java数据结构及算法实例:选择排序 Selection Sort
- iOS算法总结-选择排序
- 无聊时总结总结算法之03简单选择排序
- 算法总结-选择排序,插入排序
- Java数据结构和算法总结-冒泡排序、选择排序、插入排序算法分析
- 算法总结(3)选择排序
- 算法--选择排序 Selection Sort
- 算法-选择排序(Selection Sort)
- 关于基本排序的总结选择排序: 算法是: ① 第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换。 ③第i趟排序 第i趟排序开始时,当前有序区和无序区
- 数据结构与算法学习:选择排序
- 算法----数组的排序(冒泡 选择 插入)