其他分享
首页 > 其他分享> > js选择排序

js选择排序

作者:互联网

**选择排序**
选择排序每次都会获得最大或者最小元素的下标,每次遍历结束替换下标元素的位置,获得一个最值,他不需要像冒泡排序一样,每一次的遍历需要进行多次交换

let arr = [8,9,1,7,2,3,5,4,6,0];    
 for(let i = 0;i < arr.length;i++){
        let maxIndex = 0;    //存储最大值下标
        for(let j = 0;j < arr.length-i;j++){
            if(arr[maxIndex] < arr[j]){
                maxIndex = j;
            }
        }
        let t = arr[maxIndex];
        arr[maxIndex] = arr[arr.length-i-1];
        arr[arr.length-i-1] = t;
        console.log([...arr]);
    }
    console.log(arr);

 

选择排序是每一轮找到一个最大下标保存,然后继续进行直到最后一轮,结束。

具体步骤:
  第一轮  : i  = 0   设置最大下标为0      8=8    最大下标为0       arr[0]max = 8

                                                  8<9     最大下标为1       arr[1]max=9

                   9>1     最大下标不变     arr[1]max=9

                   9>7    最大下标不变      arr[1]max=9

                   9>2    最大下标不变      arr[1]max=9

                                                  9>3     最大下标不变     arr[1]max=9

                   9>5     最大下标不变     arr[1]max=9 

                   9>4    最大下标不变      arr[1]max=9

                   9>6    最大下标不变      arr[1]max=9

                                                  9>0     最大下标不变     arr[1]max=9

    第一轮结束,最大下标为1,此时i=0,将arr[1]的数据和数组arr[arr.length-1-i]替换,得到最大数。此时arr=[8,0,1,7,2,3,5,4,6,9]

依次类推,得到最终结果

 

标签:arr,下标,max,maxIndex,js,选择,length,let,排序
来源: https://www.cnblogs.com/lisir-blogshare/p/16575897.html