Js氣泡排序與快速排序
阿新 • • 發佈:2019-02-12
var array = [7, 8, 6, 12, 87, 35, 1, 48, 56, 12, 48, 69, 12, 12, 12, 103, 15, 6, 88, 24, 26, 25, 9, 6];
//氣泡排序 function bubbleSort(arr){ var len = arr.length; for(var i=0; i<len; i++){ var len_j = len - i - 1; for(var j=0; j<len_j; j++){ if(arr[j] > arr[j+1]){ arr[j] = arr[j] ^ arr[j+1]; arr[j+1] = arr[j] ^ arr[j+1]; arr[j] = arr[j] ^ arr[j+1]; } } } } bubbleSort(array); console.log(array); //[1, 6, 6, 6, 7, 8, 9, 12, 12, 12, 12, 12, 15, 24, 25, 26, 35, 48, 48, 56, 69, 87, 88, 103]
//快速排序 function quickSort(arr, low, high){ var staticHigh = high, //獲取最初始高位指標 val = arr[low], //把低位當做關鍵字 index = low; //關鍵字下標 if(low >= high){ return; } while(low < high){ //如果與關鍵字相同的,按比關鍵字大來排序 while(val <= arr[high]){ if(index != high){ //為避免匹配到本身時,錯誤的把高位下標減1,跳過迴圈 high--; }else{ break; } } //關鍵字與高位換位置 arr[index] = arr[high]; arr[high] = val; index = high; while(arr[low] < val){ low++; } //關鍵字與低位換位置 arr[index] = arr[low]; arr[low] = val; index = low; } quickSort(arr, 0, index-1); //遞迴前半段 quickSort(arr, index+1, staticHigh); //遞迴後半段 } quickSort(array, 0, array.length-1); console.log(array); //[1, 6, 6, 6, 7, 8, 9, 12, 12, 12, 12, 12, 15, 24, 25, 26, 35, 48, 48, 56, 69, 87, 88, 103]