插入排序
概念: 插入排序,顧名思義,在一組序列當中插入一個數,前提是在要插入數字的序列本身順序是正確的,且插入數字后序列的順序仍然有序。
思考方式: 如果要將一個數字插入到某一個數列當中,會將此數字與數列當中的所有數字進行比較過后插入。如果此這個數列的順序是正確的,那么,只需用這個需要插入的數字按照順序插入即可。 在javascript中,即將該數字在數組中得下標改為在它位置后一位數字的下標。
1 var numArr = [1,5,9,7,8,0,3,5,7,6,4];
//定義一個無序數組 2 for(i=0;i<numArr.length;i++){ 3 var sub = i; 4 var temp = numArr[sub] //把下標和數組中下標對應的數字保存 5 while(temp<numArr[sub-1]&&sub>0){//相鄰兩個數字進行比較 6 numArr[sub] =numArr[sub-1];//互換位置 7 sub--; //下標減1 8 } 9 numArr[sub]= temp; //如果兩個數字的序列調換之后,將兩個數字的位置進行調換。 10 } 11 console.log(array) //打印進行檢查
冒泡排序
概念:通過一次次遍歷之后,最大的數字會慢慢浮到最上面,因此得名。
思考方式:一組無序列表,通過遍歷整個數組按照順序兩兩對比后進行排序。遍歷一次之后,可以確定一個數字的准確位置,多次排序后進行整個數組的順序排列,在進行數組元素多的情況下,效率較低。
var numArr = [1,5,9,7,8,0,3,5,7,6,4]; //聲明一個數組 for(var i=0;i<numArr.length;i++){// 外圍循環代表從第幾個數開始比較 for(var j=0;j<numArr.length-i-1;j++){//里面循環代表對比的次數 if(numArr[J]<numArr[j+1]){//相鄰數字進行比較 var temp = numArr[j];// 對比后交換相鄰數字的位置 numArr[j] = numArr[j+1]; numArr[j+1] = temp; } } }
選擇排序
概念:從需要排序的數組中選出最小的(或者最大的)數字放在第一位,直到排序完成。
思考方式:從需要排序的數組中選擇一個數字,與數組中的其他數字進行比較,如果有比它大得就是用比它大的那個數字繼續進行比較,遍歷一邊數組后得到一個最大或者最小值,放在第一位,依次選擇,直到排序完成。
var numArr = [23,52,71,8,1111,64,9,0,2121,10,552,98,1]; for(var i=0;i<numArr.length;i++){ var min = i; //保存索引值 for(var j=i+1;j<numArr.length;j++){ if(numArr[min]>numArr[j]){//判斷是否是最小的 min =j //最小的索引值賦給 min } } var temp = j //找到最小的值后跟第i個換位置 numArr[i] = numArr[min] numArr[min] = num[j] }