JS 数组篇 数组排序方法总结

news/2024/5/19 23:36:54 标签: js, 快速排序, 插入排序, javascript

生成乱序数组

js">function arrRandom() {
  let arr = [];
  for (let i = 0; i < 10; i++) {
    let num = parseInt(Math.random() * 500);
    arr.push(num);
  }
  return arr;
}

sort()

js">/*
 *sort 排序
 */
let arr = arrRandom();
arr.sort((a, b) => a - b);
console.log("sort-----" + arr);


冒泡排序

js">/**
 * 冒泡排序
 * 每次循环把当前最大的放到最后面
 * 选取第一个 与后面依次两两比较,遇到比当前项大的交换位置,继续往下比较
 */
let arr1 = arrRandom();
for (let i = 0; i < arr1.length; i++) {
  for (let j = 0; j < arr1.length - i; j++) {
    if (arr1[j] > arr1[j + 1]) {
      let temp = arr1[j];
      arr1[j] = arr1[j + 1];
      arr1[j + 1] = temp;
    }
  }
}
console.log("Bubbling-----" + arr1);

选择排序

js">/**
 * 选择排序
 * 每次从待排序数组中选出最小的(最大的)元素,放到序列的起始位置
 */
let arr2 = arrRandom();
var len = arr2.length,
  temp,
  min;
for (let i = 0; i < len; i++) {
  min = i;
  for (let j = i + 1; j < len; j++) {
    if (arr2[min] > arr2[j]) {
      min = j;
    }
  }
  temp = arr2[min];
  arr2[min] = arr2[i];
  arr2[i] = temp;
}
console.log("choose-----" + arr2);

插入排序

js">/*
*	插入排序
*	就像打扑克,默认第一项已排序,后面取项插入到排序数组
*/
for (let i = 1; i < arr3.length; i++) {
  let temp = arr3[i];
  let j = i - 1;
  while (temp < arr3[j]) {
    arr3[j + 1] = arr3[j];
    j--;
    if (j < 0) break;
  }
  arr3[j + 1] = temp;
}
console.log("insert-----" + arr3);

快速排序

js">/*
*	快速排序
*	取中间值,将数组一分为二 利用递归排序
*/
let arr4 = arrRandom();
function quickSort(arr) {
  let len = arr.length;
  if (len <= 1) return arr;
  var num = Math.floor(arr.length / 2);
  var midValue = arr.splice(num, 1);
  len = arr.length;
  var leftArr = [],
    rightArr = [];
  for (var i = 0; i < len; i++){
    if (arr[i] < midValue){
      leftArr.push(arr[i]);
    } else {
      rightArr.push(arr[i]);
    }
  }
  return quickSort(leftArr).concat(midValue, quickSort(rightArr));
}
console.log("quickSort-----" + quickSort(arr4));

http://www.niftyadmin.cn/n/1852509.html

相关文章

利用批處理自動在異地備份數據庫

利用批處理自動在異地備份數據庫 在日常數據庫管理中&#xff0c;我們通常採用各種方法將數據庫數據進行備份&#xff0c;目的是保證數據的安 全&#xff0c;而各種備份方法都有自己的優缺點&#xff0c;這裡向大家推薦一種&#xff1a;假設有機器PC-A和PC-B,P C-A安裝了DB(SQ…

JS 基础篇(八) 深拷贝与浅拷贝

前提 堆栈的概念 在javascript中&#xff0c;Object&#xff0c;Array&#xff0c;Function是放到堆中&#xff0c; Number&#xff0c;String&#xff0c;Null&#xff0c;Boolean存放在栈中指针 个人理解像一个内存地址&#xff0c;指向了数据存放的堆中数据存储 关于堆…

ffpmeg参数说明

最近在研究如何将.avi,wmv等文件通过程序自动转为flv文件&#xff0c;结果发现其实是可以的&#xff0c;要搞成不是那么难的&#xff0c;主要是ffpmeg这东西&#xff0c;转了相关的参数如下&#xff0c;方便日后参考ffmpeg.exe -i F:\闪客之家\闪客之歌.mp3 -ab 56 -ar 22050 -…

GZS与小公园(DFS)

Description 某天GZS漫步在学校新建的小公园&#xff0c;他发现那里建成了一些水池和小河道。我们暂且把它们统一看成水池。假设公园旁有一张小公园的地图&#xff0c;上面仅标识了此处是否是水池&#xff0c;你能帮GZS计算出该地图中一共有几个水池吗。 Input 第一行输入一个整…

JS 基础篇(九) 函数防抖和函数节流

函数防抖 函数防抖&#xff1a;高频率触发&#xff08;比如10分钟内一直触发&#xff09;的时候&#xff0c;只执行一次&#xff0c;第一次或者最后一次。重点在只执行一次。 在事件被触发n秒后再执行回调&#xff0c;如果在这n秒内又被触发&#xff0c;则重新计时。 应用场景…

c#,随机数,random

摘自&#xff1a;http://www.pcjx.com/Dotnet/C/208333.html我们在做能自动生成试卷的考试系统时&#xff0c;常常需要随机生成一组不重复的题目&#xff0c;在.net Framework中提供了一个专门用来产生随机数的类System.Random。对于随机数&#xff0c;大家都知道&#xff0c;计…

beautifulsoup库的使用

beautifulsoup库的使用 beautifulsoup就是一个非常强大的工具&#xff0c;爬虫利器。 beautifulSoup “美味的汤&#xff0c;绿色的浓汤” 一个灵活又方便的网页解析库&#xff0c;处理高效&#xff0c;支持多种解析器。利用它就不用编写正则表达式也能方便的实现网页信息的抓取…

JS 基础篇(十) cookie封装

cookie简单介绍 cookie的特点1.cookie一般有大小限制为4kb&#xff0c; 2.限制同一域名数量为50个 3.读取有域名限制 4.时效性cookie 使用//添加cookie document.cookie “keyvalue”; // 一次写入一个键值对 //读取cookie document.cookie //获得所有cookie 分号分割//exp…