zoukankan      html  css  js  c++  java
  • 排序算法之直接选择排序

    直接选择排序:通过n-1轮外层循环排序,第 i 轮排序都会有一个n-i-1的内层循环,每次内层循环从无序序列中取得最大值或最小值的下标,通过两两比较、不交换的方式(内层循环不进行元素移动,进行最小值或最大值下标的改变),当每一轮外层循环结束时,通过最大值或最小值的下标,将最大值或最小值移动到有序序列。最后一个数默认进入有序序列,排序结束。

    冒泡排序和直接选择排序:都是通过在无序序列中获取最大值或最小值,移动到有序序列里,采用不同方式移动的排序。

     1 //直接选择排序
     2 
     3 const NumberArr = [1, 3, 1, 6, 9, 8, 6, 44, 3, 67, 56, 12, 3];
     4 
     5 /**
     6  * 升幂排序
     7  * @param {*} arr 
     8  */
     9 function direct_select_asc(arr) {
    10     for (let i = 0; i < arr.length - 1; i++) {
    11         let min = i;
    12         for (let j = i + 1; j < arr.length; j++) {
    13             if (arr[min] > arr[j]) {
    14                 min = j;
    15             }
    16         }
    17         if (min !== i) {
    18             let temp = arr[i];
    19             arr[i] = arr[min];
    20             arr[min] = temp;
    21         }
    22     }
    23     return arr;
    24 }
    25 
    26 /**
    27  * 降幂排序
    28  * @param {*} arr 
    29  */
    30 function direct_select_desc(arr) {
    31     for (let i = 0; i < arr.length - 1; i++) {
    32         let max = i;
    33         for (let j = i + 1; j < arr.length; j++) {
    34             if (arr[max] < arr[j]) {
    35                 max = j;
    36             }
    37         }
    38         if (max !== i) {
    39             let temp = arr[i];
    40             arr[i] = arr[max];
    41             arr[max] = temp;
    42         }
    43     }
    44     return arr;
    45 }
    46 
    47 console.log(direct_select_asc(NumberArr));
  • 相关阅读:
    js判断手机或Pc端登陆.并跳转到相应的页面
    短信接口的使用
    sql替换
    jQuery 双击事件(dblclick)
    attr 和 prop 的区别
    如何获得select被选中option的value和text
    微信公众号基本配置
    关闭当前界面
    oninput、onchange与onpropertychange事件的区别, 与input输入框实时检测
    thinkphp5 与 endroid 二维码生成
  • 原文地址:https://www.cnblogs.com/huanqiuxuexiji/p/9163499.html
Copyright © 2011-2022 走看看