function(queries, m){let p =[];for(let i =1; i <= m; i++){
p.push(i);}let res =[];for(let i =0; i < queries.length; i++){let index = p.indexOf(queries[i]);
res.push(index);
p.splice(index,1);
p.unshift(queries[i]);}return res;};
functioninsertSort(arr){for(let i =1; i < arr.length; i++){let temp = arr[i];let j = i -1;while(j >=0&& arr[j]> temp){
arr[j +1]= arr[j];
j--;}
arr[j +1]= temp;}return arr;}
console.log(insertSort([1,3,2,5,4,6,7,9,8]));
7.快速排序
functionquickSort(arr){if(arr.length <=1){return arr;}let left =[];let right =[];let mid = arr.splice(0,1);for(let i =0; i < arr.length; i++){if(arr[i]< mid){
left.push(arr[i]);}else{
right.push(arr[i]);}}returnquickSort(left).concat(mid,quickSort(right));}
console.log(quickSort([1,3,2,5,4,6,7,9,8]));
8.归并排序
functionmergeSort(arr){if(arr.length <=1){return arr;}let mid = Math.floor(arr.length /2);let left = arr.slice(0, mid);let right = arr.slice(mid);returnmerge(mergeSort(left),mergeSort(right));}functionmerge(left, right){let result =[];while(left.length && right.length){if(left[0]<= right[0]){
result.push(left.shift());}else{
result.push(right.shift());}}while(left.length){
result.push(left.shift());}while(right.length){
result.push(right.shift());}return result;}
console.log(mergeSort([1,3,2,5,4,6,7,9,8]));
9.堆排序
functionheapSort(arr){let len = arr.length;buildMaxHeap(arr);for(let i = len -1; i >0; i--){swap(arr,0, i);
len--;heapify(arr,0, len);}return arr;}functionbuildMaxHeap(arr){let len = arr.length;for(let i = Math.floor(len /2); i >=0; i--){heapify(arr, i, len);}}functionheapify(arr, i, len){let left =2* i +1;let right =2* i +2;let largest = i;if(left < len && arr[left]> arr[largest]){
largest = left;}if(right < len && arr[right]> arr[largest]){
largest = right;}if(largest != i){swap(arr, i, largest);heapify(arr, largest, len);}}functionswap(arr, i, j){let temp = arr[i];
arr[i]= arr[j];
arr[j]= temp;}
console.log(heapSort([1,3,2,5,4,6,7,9,8]));
10.希尔排序
functionshellSort(arr){let len = arr.length;let gap = Math.floor(len /2);while(gap >0){for(let i = gap; i < len; i++){let j = i;let current = arr[i];while(j - gap >=0&& current < arr[j - gap]){
arr[j]= arr[j - gap];
j = j - gap;}
arr[j]= current;}
gap = Math.floor(gap /2);}return arr;}
console.log(shellSort([1,3,2,5,4,6,7,9,8]));