博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简明算法: 选择排序(javascript描述)
阅读量:5795 次
发布时间:2019-06-18

本文共 1387 字,大约阅读时间需要 4 分钟。

懒惰了很久,人有点生锈,所以写个算法系列让自己脑筋活跃起来。

(所有范例一律从小到大排序)

选择排序比冒泡的改进是,不会频繁交换元素,而只是记录索引,最后再交换。

选择排序

给定数组:

var list = [ 54, 26, 93, 17, 77, 31, 44, 88, 55, 20 ];

算法描述:

  1. 首先设k=0,假定首元素既索引k代表最小元素,然后将第一个元素与第二个元素对比,如果第一个元素比第二个元素大,更改此时的索引k=1,既现在第二个元素是最小元素,此时:

    k = 1;
  2. 将第二个元素与第三个元素对比,此时第二个元素比第三个元素小,保持原样不变;

    k = 1;
  3. 重复上面的步骤,直到最后我们用倒数第二个元素与倒数第一个元素相比之后;经过第一轮排序,我们确定了最小元素的索引,然后与首元素交换位置,此时最小元素排列在数组首尾;

    k = 3;  [list[0], list[3]] = [list[3], list[0]];
  4. 然后我们重复1,2,3步骤;经过第二轮我们会找到次小的元素索引,放到数组第二位;

    k = 9; [list[1], list[9]] = [list[9], list[1]];
  5. 再次重复直到整个数组有序;

    第1轮: [ 17, 26, 93, 54, 77, 31, 44, 88, 55, 20 ]第2轮: [ 17, 20, 93, 54, 77, 31, 44, 88, 55, 26 ]第3轮: [ 17, 20, 26, 54, 77, 31, 44, 88, 55, 93 ]第4轮: [ 17, 20, 26, 31, 77, 54, 44, 88, 55, 93 ]第5轮: [ 17, 20, 26, 31, 44, 54, 77, 88, 55, 93 ]第6轮: [ 17, 20, 26, 31, 44, 54, 77, 88, 55, 93 ]第7轮: [ 17, 20, 26, 31, 44, 54, 55, 88, 77, 93 ]第8轮: [ 17, 20, 26, 31, 44, 54, 55, 77, 88, 93 ]第9轮: [ 17, 20, 26, 31, 44, 54, 55, 77, 88, 93 ]

算法实现:

function select(list) {  // 做length-1轮比较  for (let i = 0; i < list.length - 1; i++) {    // 假定k是最小元素    let k = i;    // 两两对比 找到比最小元素还小的索引    for (let j = i + 1; j < list.length; j++) {      if (list[j] < list[k]) {        k = j;      }    }    // 交换    [list[i], list[k]] = [list[k], list[i]];  }}// 测试var list = [ 54, 26, 93, 17, 77, 31, 44, 88, 55, 20 ];select(list);console.log(list);// [ 17, 20, 26, 31, 44, 54, 55, 77, 88, 93 ]

转载地址:http://zobfx.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
Kali linux virtualbox rc=1908 错误解决办法
查看>>
linux 挂载新的硬盘
查看>>
svn解锁
查看>>
Erlang学习总结之Erlang语法中的逗号(,)、分号(;),句号(.)的正确用法...
查看>>
linux软件包管理之三(源代码安装)
查看>>
数据库三范式是什么?
查看>>
我的友情链接
查看>>
[转载]设置Ubuntu自动连接无线,无须再输入密钥环和无线密码
查看>>
SQL Server 2014 许可证(三)各版本的许可证
查看>>
九叔Xen App测试报告
查看>>
[ExtJs4.0]数据从excle2003导入到数据库【2-2-2】
查看>>
解决在局域网不能访问apache服务器问题
查看>>
查看是否为归档模式
查看>>
windows server 2008 安装 Exchange 2010
查看>>
RHEL6中cacti监控系统搭建及使用
查看>>
hadoop提示权限不够
查看>>
Java开发常用正则表达式处理案例总结
查看>>
Canvas
查看>>
win7/8 下net命令无效的问题
查看>>