Skip to content

归并排序(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>

不知道说啥了很无语了