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