数组排序方法

本文详细介绍了四种常见的排序算法:冒泡排序、选择排序、希尔排序以及JavaScript内置的sort方法。每种排序算法的实现过程、比较次数和效率特性都进行了分析。此外,还探讨了插入排序这一简单但实用的排序方法。通过实例代码,读者可以深入理解这些排序算法的工作原理及其应用场景。
摘要由CSDN通过智能技术生成
// 冒泡排序
let arr = [8, 4, 5, 3,9];
/*
 * 总共比较次数为arr.length-1次
 * 每次的比较次数为arr.length-1次
 * 依次递减
 */
let temp; //交换变量标识
// 两层for分别表示当前项与第二项
for (let i = 0; i < arr.length - 1; i++) {
  for (let j = 0; j < arr.length - 1; j++) {
    // 如果当前项大于第二项(后一项)则交换
    if (arr[j] > arr[j + 1]) {
      temp = arr[j];
      arr[j] = arr[j + 1];
      arr[j + 1] = temp;
    }
  }
}
// 打印排序后的数组
console.log(arr);
// 选择排序
let arr2 = [8, 4, 5, 3,9];
let temp2; //交换变量标识
// 两层for分别表示当前项与第二项
for (let i = 0; i < arr2.length - 1; i++) {
  for (let j = i + 1; j < arr2.length; j++) {
    // 假设第二项是最小值(是则交换/否则继续比较)
    if (arr2[i] > arr2[j]) {
      temp2 = arr2[i];
      arr2[i] = arr2[j];
      arr2[j] = temp2;
    }
  }
}
// 打印排序后的数组
console.log(arr2); 
// 希尔排序算法
function xier(arr) {
  let interval = parseInt(arr.length / 2); //分组间隔设置
  while (interval > 0) {
    for (let i = 0; i < arr.length; i++) {
      let n = i;
      while (arr[n] < arr[n - interval] && n > 0) {
        let temp = arr[n];
        arr[n] = arr[n - interval];
        arr[n - interval] = temp;
        n = n - interval;
      }
    }
    interval = parseInt(interval / 2);
  }
  return arr;
}
let arr3 = [8, 4, 5, 3,9];
// 打印排序后的数组
console.log(xier(arr3));
// sort排序
let arr4 = [8, 4, 5, 3,9];
arr4.sort(function (a, b) {
  /*
   * return b-a; —> 降序排序
   * return a-b; —> 升序排列
   */
  return a - b;
});
//括号里不写回调函数则默认按照字母逐位升序排列
// 打印排序后的数组
console.log(arr4); 
// 插入排序
let arr5 = [8, 4, 5, 3,9];
for (let i = 0; i < arr5.length; i++) {
  let n = i;
  while (arr5[n] > arr5[n + 1] && n >= 0) {
    let temp = arr5[n];
    arr5[n] = arr5[n + 1];
    arr5[n + 1] = temp;
    n--;
  }
}
// 打印排序后的数组
console.log(arr5);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值