归并排序(Merge Sort)
归并排序(Merge Sort)
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的例子,且各层分治递归可以同时进行。
示例
3
5
7
8
4
1
6
9
2
点我排序
vue
<script setup lang="ts">
import {reactive} from "vue";
const mergeSortList = reactive({
mergeSortList:[3,5,7,8,4,1,6,9,0]
})
const mergeSortClick= ()=>{
mergeSortList.mergeSortList = mergeSort(mergeSortList.mergeSortList)
}
function mergeSort(arr) {
if (arr.length <= 1) {
return arr;
}
let mid = Math.floor(arr.length / 2);
let left = mergeSort(arr.slice(0, mid));
let right = mergeSort(arr.slice(mid));
return merge(left, right);
}
function merge(left, right) {
let result = [];
let i = 0, j = 0;
while (i < left.length && j < right.length) {
if (left[i] < right[j]) {
result.push(left[i]);
i++;
} else {
result.push(right[j]);
j++;
}
}
return result.concat(left.slice(i)).concat(right.slice(j));
}
</script>
<template>
<p>{{JSON.stringify(mergeSortList.mergeSortList)}}</p>
<h4 @click="mergeSortClick">点我排序</h4>
</template>
<style scoped lang="scss">
</style>