這里使用了冒泡排序、選擇排序、插入排序的方式對數組進行排序
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);
之后還會繼續補充添加。