SOURCE

// 归并排序函数
function mergeSort(array) {
  // 如果数组长度小于等于1,则直接返回数组(因为它已经是有序的)
  if (array.length <= 1) {
    return array;
  }

  // 找到数组的中间索引
  const middleIndex = Math.floor(array.length / 2);

  // 将数组分成两个子数组
  const leftArray = array.slice(0, middleIndex);
  const rightArray = array.slice(middleIndex);

  // 递归地对两个子数组进行归并排序
  const sortedLeftArray = mergeSort(leftArray);
  const sortedRightArray = mergeSort(rightArray);

  // 合并两个已排序的子数组
  return merge(sortedLeftArray, sortedRightArray);
}

// 合并两个已排序的数组的函数
function merge(leftArray, rightArray) {
  let sortedArray = [];
  let leftIndex = 0;
  let rightIndex = 0;

  // 比较两个数组的元素,并将较小的元素添加到排序后的数组中
  while (leftIndex < leftArray.length && rightIndex < rightArray.length) {
    if (leftArray[leftIndex] < rightArray[rightIndex]) {
      sortedArray.push(leftArray[leftIndex]);
      leftIndex++;
    } else {
      sortedArray.push(rightArray[rightIndex]);
      rightIndex++;
    }
  }

  // 将剩余的元素(如果有的话)添加到排序后的数组中
  return sortedArray
    .concat(leftArray.slice(leftIndex))
    .concat(rightArray.slice(rightIndex));
}

// 示例使用
const array = [38, 27, 43, 3, 9, 82, 10];
const sortedArray = mergeSort(array);
console.log(sortedArray); // 输出: [3, 9, 10, 27, 38, 43, 82]
body {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  margin: 0;
  background-color: #f0f0f0;
}
 
.progress-circle {
  position: relative;
  width: 150px;
  height: 150px;
}
 
.progress-circle__circle {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background: conic-gradient(#76c7c0 var(--progress, 0%), #333 0%);
console 命令行工具 X clear

                    
>
console