js数组排序的六种方法

js数组排序的六种方法js 数组排序的六种方法 js 数组排序

大家好,欢迎来到IT知识分享网。

1. sort()排序

sort() 方法用于对数组的元素进行排序。

排序顺序可以是字母或数字,并按升序或降序。默认排序顺序为按字母升序。

注意: 当数字是按字母顺序排列时”40″将排在”5″前面。因为“40”中的”4″小于“5”。

使用数字排序,你必须通过一个函数作为参数来调用。函数指定数字是按照升序还是降序排列。

注意: 这种方法会改变原始数组!。

 // sort排序 const sortArr = [5,2,1,3,6,8,4,5,7,0,15]; const sortAns = sortArr.sort(); console.log(sortAns,'----------------------sort排序'); // [0, 1, 15, 2, 3, 4, 5, 5, 6, 7, 8] '----------------------sort排序' const sortArr1 = [5,2,1,3,6,8,4,5,7,0,15]; const sortAns1 = sortArr1.sort((a,b)=>{ 
   return a-b}); console.log(sortAns1,'----------------------sort1排序'); // [0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 15] '----------------------sort1排序' const sortArr2 = ["Banana", "Orange", "Apple", "Mango"]; const sortAns2 = sortArr2.sort(); console.log(sortAns2,'----------------------sort2排序'); // ['Apple', 'Banana', 'Mango', 'Orange'] '----------------------sort2排序' 

2. 选择排序

 // 选择排序 const choseArr = [5,2,1,3,6,8,4,5,7,0,15]; for (let i = 0; i < choseArr.length-1; i++) { 
    let minIndex = i; //用于存储最小值的下标,排序刚开始时,假设最小值的下标就是选中的基准数据下标 for (let j = i+1; j < choseArr.length; j++) { 
    if (choseArr[j] < choseArr[minIndex]) { 
    minIndex = j; } } [choseArr[i],choseArr[minIndex]] = [choseArr[minIndex],choseArr[i]] } console.log(choseArr,'----------------------选择排序'); // [0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 15] '----------------------选择排序' 

推荐视频:小伙教你,5分钟学会 JS中的选择排序

3. 快速排序

 // 快速排序 const quickArr = [5,2,1,3,6,8,4,5,7,0,15]; function quickFun(params) { 
    //当进行递归的数组的长度小于等于 1 的时候直接返回该数组 if (params.length <= 1) { 
    return params; } let middleIndex = Math.floor(params.length / 2); //获取基准数据的下标 let middleItem = params.splice(middleIndex,1)[0]; //截取基准数据 let leftArr = []; let rightArr = []; for (let k = 0; k < params.length; k++) { 
    if (params[k] > middleItem) { 
    rightArr.push(params[k]); }else{ 
    leftArr.push(params[k]); } } return quickFun(leftArr).concat(middleItem,quickFun(rightArr)); //将左边数组,基准数据和右边数组进行拼接成一个完整的数组 } const quickAns = quickFun(quickArr); console.log(quickAns,'----------------------快速排序'); // [0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 15] '----------------------快速排序' 

推荐视频:javascript 实现快速排序

4. 冒泡排序

 // 冒泡排序 const popArr = [5,2,1,3,6,8,4,5,7,0,15]; // 因为是前后两两排序,所以只需要数组长度-1 次遍历即可 for (let g = 0; g < popArr.length-1; g++) { 
    for (let h = 0; h < popArr.length-1; h++) { 
    if (popArr[h] > popArr[h+1]) { 
    [popArr[h],popArr[h+1]] = [popArr[h+1],popArr[h]]; } } } console.log(popArr,'----------------------冒泡排序'); // [0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 15] '----------------------冒泡排序' 

推荐视频:JS冒泡排序

5. 插入排序

 // 插入排序 const pickArr = [5,2,1,3,6,8,4,5,7,0,15]; function pickFun(params){ 
    let preIndex = 0; // 进行大小对比的基准数据的下标 let current = 0; // 进行大小对比的当前选中的剩余数量值 for (let g = 1; g < params.length; g++) { 
    preIndex = g - 1; // 进行基准数据赋值 current = params[g]; // 获取当前进行对比的剩余数量值 while(preIndex >= 0 && params[preIndex] > current){ 
    params[preIndex+1] = params[preIndex]; preIndex--; } params[preIndex+1] = current; } return params; } const pickAns = pickFun(pickArr); console.log(pickAns,'----------------------插入排序'); // [0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 15] '----------------------插入排序' 

推荐视频:JS插入排序

6. 希尔排序

 // 希尔排序 const hillArr = [5,2,1,3,6,8,4,5,7,0,15]; function hillFun(arr){ 
    //第一层循环,确定间隔数 // 这里的 gap 相当于插入排序中的 1 ,所以在第二层循环中 preIndex = i-gap; 相当于插入排序中的 preIndex = g - 1; for(let gap = parseInt(arr.length/2); gap > 0 ; gap = parseInt(gap/2)){ 
    //第二层循环,使用插入排序 for(let i = gap ; i < arr.length ; i++){ 
    let preIndex = i-gap; let current = arr[i] while(preIndex >=0 && current < arr[preIndex]){ 
    arr[preIndex + gap] = arr[preIndex]; preIndex -= gap; } arr[preIndex+gap] = current } } return arr; } const hillAns = hillFun(hillArr); console.log(hillAns,'----------------------希尔排序'); // [0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 15] '----------------------希尔排序' 

推荐视频:[算法]六分钟彻底弄懂希尔排序,简单易懂

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121844.html

(0)
上一篇 2025-10-21 11:10
下一篇 2025-10-21 11:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信