前端javascript中的排序算法之选择排序

选择排序(Selection Sort)基本思想
是一种原址排序法
将数组分为两个区间:左侧为已排序区间,右侧为未排序区间。每趟从未排序区间中选择一个值最小的元素,放到已排序区间的末尾,从而将该元素划分到已排序区间。

代码实现

js 复制代码
function selectSort(arr) {
  const len = arr.length;
  let indexMin = 0;
  //迭代到最后一项时,前面已经排好序,无需再循环
  for (let i = 0; i < len - 1; i++) {
    indexMin = i;
    //每一轮迭代中,找到最小的值
    for (let j = i; j < len; j++) {
      if (arr[indexMin] > arr[j]) {
        indexMin = j;
      }
    }
    //默认最小值与实际的最小值不相同,则交换
    if (i != indexMin) {
      swap(arr, i, indexMin);
    }
  }
  return arr;
}

function swap(arr, i, j) {
  const temp = arr[i];
  arr[i] = arr[j];
  arr[j] = temp;
}

复杂度

  • 时间复杂度O(1),只用到了几个辅助的常量,i,j及最小位置minIndex
  • 空间复杂度O(n²)

代码测试

js 复制代码
 const arr = [10,23,4,5,49,123,456]
 const res = selectSort(arr)
 console.log("🚀 ~ res:", res)
相关推荐
国科安芯4 分钟前
商业航天通信载荷数字处理单元供电架构研究——基于ASP7A84AS的高精度低压差线性稳压器技术分析
前端·单片机·嵌入式硬件·fpga开发·架构·安全性测试
TangentDomain26 分钟前
AI 写代码时代,游戏 UI 架构为什么停在 MVP?
前端·游戏·架构
英勇无比的消炎药29 分钟前
前端提效神器全新AI组件库TinyRobot改写日常开发模式
前端·vue.js
GuWenyue30 分钟前
10分钟搞定TodoList实战!从0搭建Bun+TS的RESTful接口服务
前端·typescript·bun
IMPYLH32 分钟前
HTML 的 <a>元素
前端·javascript·html
PedroQue9936 分钟前
uni-router:uni-app路由管理新选择
前端·uni-app
Cerrda40 分钟前
一行指令搞定复制:Vue 3 vCopy 实现解析
前端·代码规范
英勇无比的消炎药43 分钟前
前端提效神器TinyRobot
前端·vue.js
CDwenhuohuo1 小时前
uni 背景色渐变 全屏
前端·javascript·vue.js
爱怪笑的小杰杰1 小时前
Vue 项目交付第三方开发,如何隐藏核心 JS 源码?
前端·javascript·vue.js