js实现选择排序

js实现选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,

假设排升序:

第一次将数组中的第一个元素依次和后面的比较, 如果有比它小的, 交换位置, 继续往后走,这样下来, 最小的值一定是第一个;
第二次将数组中的第二个元素依次和后面的比较, 如果有比它小的, 交换位置, 继续往后走,这样下来, 第二小的值一定是第二个;

例如: const arr = [6, 39, 220, 54, 30, 9999, 4, 78, 1, 1000];

  1. 第一次用 6依次和后面的比,遇到4比它小, 交换位置, 用4继续和78比较, 遇到1比4小, 交换位置, 用1再和1000比较, 第一次结束结果 1,39,220,54,30,9999,6,78,4,1000
  2. 第二次用 39依次和后面的比,遇到30比它小, 交换位置, 用30继续和9999比较, 遇到6比30小, 交换位置, 用6再和78比较依次类推, 第二次结束结果 1,4,220,54,39,9999,30,78,6,1000

实现代码如下

const arr = [6, 39, 220, 54, 30, 9999, 4, 78, 1, 1000];
function selectionSort(arr) {
  for(let i = 0; i< arr.length - 1; i ++) {
    for(let j = i+ 1; j< arr.length; j++ ) { 
      //升序
      if(arr[i] > arr[j]) {
        [arr[j], arr[i]] = [arr[i], arr[j]]
      }
    }
    console.log(`${i + 1}`,arr.join(','));
  }
}
selectionSort(arr)
console.log('最终数据', arr);

时间复杂度: 因为是双层for循环, 时间复杂度为 O( n^2 )
空间复杂度:排序的辅助变量空间是一个临时变量,不会随着排序规模的扩大而进行扩大,所以空间复杂度为O(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值