js排序算法03——選擇排序
阿新 • • 發佈:2018-01-13
arr sort 類型判斷 for循環 最好 lag 時間 isarray cti
選排序的思路是首先從要排序的數組中選擇最小的和目前的第一位交換位置,然後從剩下的數中選擇最小的和第二個位置的數交換位置,再從剩下的數中選擇最小的和第三個位置的數交換位置,以此類推,實現代碼如下:
function selectSort(arr){ if(!Array.isArray(arr)){ return false; //類型判斷 } else{ var flag; for(var i=0;i<arr.length;i++){ var minIndex = i; //假設最小數的索引 for (var j = i; j < arr.length; j++) { if(arr[j]<arr[minIndex]){ minIndex = j; //找到更小的數,更新索引 } } if(arr[minIndex]<arr[i]){ flag = arr[i]; arr[i]= arr[minIndex]; arr[minIndex] = flag; } } return arr; } }
算法分析:無論最好或最壞情況,該算法的時間復雜度總是O(n2),因為每次要走第二個for循環找最小的數,感覺有點坑啊。
js排序算法03——選擇排序