JavaScript选择排序算法原理与代码实现详解

作者:纸飞机

时间:2026-10-22

浏览:144

本文详细介绍JavaScript中选择排序算法的核心原理与具体实现方法。通过班级排队的生动比喻,解析如何从无序数组中逐轮选取最小元素并交换位置,最终完成从低到高的排序。文章附带完整的JavaScript代码示例及在线测试工具链接,帮助开发者深入理解简单排序算法的逻辑与执行过程。

文章目录

选择排序算法概述

本文通过具体实例,详细解析JavaScript中实现选择排序算法的原理与代码方法,供读者参考学习。

选择排序原理详解

一、选择排序简介

冒泡排序、插入排序与选择排序通常被归类为简单排序算法。以下将重点阐述选择排序的核心思想。

假设存在一个数组a,可以将其想象为一个名为a班的班级。全班同学随机排成一列,排头对应数组索引a[0],排尾对应a[a.length-1]。目前的排列顺序是随机的,我们的目标是将他们按照身高从矮到高重新排列,使得排头最矮,排尾最高。

选择排序的执行逻辑如下:

第一轮排序过程:

(1)将a[1]位置的同学与a[0]位置的同学进行比较。若a[1]比a[0]矮,则记录a[1]的位置;若a[1]不比a[0]矮,则保持记录a[0]的位置。此时,被记录位置的即为当前已知最矮的同学;

(2)将a[2]位置的同学与当前记录位置的同学进行比较。若a[2]更矮,则更新记录位置为a[2];否则不改变记录。此时,新记录位置的即为当前遍历过的最矮同学;

(3)将a[3]位置的同学与当前记录位置的同学进行比较。若a[3]更矮,则更新记录位置为a[3];否则不改变。此时,新记录位置的即为当前遍历过的最矮同学; ······

依此类推,直到a[a.length-1]位置的同学与记录位置的同学比较完毕。经过这一轮遍历,记录位置所指向的同学即为整个数组中最矮的。

为了完成排序,需要将最矮的同学交换到a[0]位置。具体操作是将a[0]位置的同学与记录位置的同学互换。至此,最矮的队员成功归位至a[0]号位。

第二轮排序过程:

重复第一轮的操作逻辑,但起始比较位置从a[1]开始。依次比较后,将本轮找到的最矮同学(即整体第二矮)交换至a[1]位置。第二矮的队员成功归位至a[1]号位。

······ 最后一轮排序:

从a[a.length-2]位置开始依次比较。此时仅剩a[a.length-2]和a[a.length-1]两个元素未排序。经过一次比较,将较高的同学放入a[a.length-2]位置,而a[a.length-1]位置自然成为最高同学的位置,排序由此完成。

JavaScript代码实现与测试

二、JavaScript实现选择排序


function select_sort(arr) {
  var k;
  var temp;
  var l=arr.length;
  for (var i = 0; i < l-1; i++) {
    k=i;
    for (var j = i+1; j < l; j++) {
      if (arr[j]<arr[k]) {
        k=j;
      }
    }
    temp=arr[k];
    arr[k]=arr[i];
    arr[i]=temp;
  }
  return arr;
}
var a=[11,2,3,445,7,32,71,1,94];
console.log(select_sort(a));
var b=[94,11];
console.log(select_sort(b));

代码说明:

若数组仅包含一个元素,外层for循环的条件i < l-1将不满足,导致循环不执行。这种情况下,数组无需任何操作,结果依然正确。

上述代码已通过在线HTML/CSS/JavaScript代码运行工具http://tools.jb51.net/code/HtmlJsRun进行测试,运行结果如下:

选择排序算法概述

PS:此处推荐一款关于排序过程的演示工具供参考:

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具: http://tools.jb51.net/aideddesign/paixu_ys

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》

希望本文所述内容对大家掌握JavaScript程序设计有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章