js数组排序方法
这里使用了冒泡排序、选择排序、插入排序的方式对数组进行排序
1 let arr = [1,3,2,7,5,4]; //对数据进行从小到大排序 2 // **冒泡排序** 3 // 冒泡排序按照一定的遍历规则(从小到大、从大到小),对数据进行遍历,每一轮遍历结束会确定一个最大值或者最小值,在对剩下的数据再次进行重复操作,直到最后剩余一个元素。 4 // 第一轮遍历的具体步骤: 5 // 1、3对比,1小于3不替换位置,结果为[1,3,2,7,5,4], 6 // 3、2对比,3大于2,2、3替换位置,结果为[1,2,3,7,5,4], 7 // 3、7对比,3小于7不替换,结果为[1,2,3,7,5,4], 8 // 7、4对比,7<4替换,结果为[1,2,3,5,7,4], 9 // 7、5对比,7大于5替换,结果为[1,2,3,5,4,7] 10 // 第一轮走完,最终确定了一个最大值7,接下来遍历的数据为[1,2,3,5,4],重复进行 11 // for(let i = 0;i < arr.length;i++){ 12 // for(let j = 0;j <arr.length-i;j++){ 13 // if(arr[j]>arr[j+1]){ 14 // let t = arr[j]; 15 // arr[j] = arr[j+1]; 16 // arr[j+1] = t; 17 // } 18 // } 19 // } 20 // console.log(arr); 21 // **选择排序** 22 // 选择排序每次都会获得最大或者最小元素的下标,每次遍历结束替换下标元素的位置,获得一个最值,他不需要像冒泡排序一样,每一次的遍历需要进行多次交换 23 // 第一轮遍历具体步骤: 24 // 下标为0开始,设置为最大值下标,用arr[0]和其他的进行对比,1和3对比,3大,取3的下标作为最大值下标 25 // 下标为1,3和2对比,3大,下标不变 26 // 下标为1,3和7对比,7大,取7的下标作为最大值下标 27 // 下标为3,7和5对比,7大,下标不变 28 // 下标为3,7和4对比,7大,下标不变 29 // 第一轮遍历走完,最终确定最大值下标为3,取最大值下标和数组最后一个元素替换,变为[1,3,2,4,5,7],接下来的遍历的数据为[1,3,2,4,5],去掉最后一个已经确定的元素,继续如下操作 30 // for(let i = 0;i < arr.length;i++){ 31 // let maxIndex = 0; //存储最大值下标 32 // for(let j = 0;j < arr.length-i;j++){ 33 // if(arr[maxIndex] < arr[j]){ 34 // maxIndex = j; 35 // } 36 // } 37 // let t = arr[maxIndex]; 38 // console.log(t); 39 // arr[maxIndex] = arr[arr.length-i-1]; 40 // arr[arr.length-i-1] = t; 41 // } 42 // console.log(arr); 43 // **插入排序** 44 // 插入排序主要是将需要排序的数组分为两部分,取第一个元素作为已排序数组,其余元素作为未排序数组,一次取未排序数组的元素和已排序数组中的元素进行对比插入,最终未排序数组变为空值,已排序数组就是排序结果 45 // for (var i = 0, len = arr.length; i < len; i++) { 46 // var item = arr[i]; // 储存当前位置的值 47 // for (var j = i - 1; j > -1 && arr[j] > item; j--){ // 和前面已经有序的部分,比较,交换 48 // arr[j + 1] = arr[j]; 49 // } 50 // arr[j+1] = item; 51 // } 52 // console.log(arr);
之后还会继续补充添加。