JS十大经典排序排序算法

1.冒泡排序

冒泡排序通常排在第一位,说明它是排序算法的入门算法,是最简单的一个排序算法,而且必须掌握和理解。

先来看看代码吧:

function bubbleSort(arr) {
  let temp;
  for (let i = 0, len = arr.length; i < len; i++) {
    for (let j = 0; j < len - 1 - i; j++) {
      if (arr[j] > arr[j + 1]) {
        temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
  return arr;
}

以上做了两层循环,第二层循环是第一个项和第二个项对比,如果第二个大于第一个,就交换他们的位置,那么大的数就在右边。进入下一次循环,第二个和第三个对比,大的移动到右边,以此类推,最大的数会交换到最右边。也就是说第二层循环的目的是找出最大值,冒泡到最右边。

第一层循环目的是要循环arr.length遍,第一遍是找出数组第一大的数,排到最右边,第二遍是找出第二大的(因为已经找出第一大的,所以是j < len - 1 -i), 继续循环找到次大的书,循环arr.length编,就从右向左依次递减,排序完成。

如果是倒序排列,第二层循环方向,每次找出最小值,冒泡到左边。

2.选择排序

function selectionSort(arr) {
  let temp;
  let minIndex;
  for (let i = 0, len = arr.length; i < len - 1; i++) {
    minIndex = i;
    for (let j = i; j < len; j++) {
      if (arr[j] < arr[minIndex]) {
        minIndex = j;
      }
    }
    temp = arr[i];
    arr[i] = arr[minIndex];
    arr[minIndex] = temp;
  }
  return arr;
}

 

转载于:https://www.cnblogs.com/bagexiaowenti/p/10785813.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值