当前位置:   article > 正文

JavaScript实现归并排序及vscode输出乱码解决

JavaScript实现归并排序及vscode输出乱码解决

思路

归并排序思路:11.6   归并排序 - Hello 算法

总体上来讲就是 递归分解 + 归并排序 代码如下↓

代码

  1. //归并排序
  2. function merge(left, right){
  3. console.log(flag++);
  4. console.log(left);
  5. console.log(right);
  6. let result = new Array();
  7. let il = 0, ir = 0;
  8. //左右两个数组的元素依次进行比较 将较小的元素加入结果数组中
  9. while(il < left.length && ir < right.length){
  10. if(left[il] < right[ir]){
  11. result.push(left[il]);
  12. il++;
  13. }else{
  14. result.push(right[ir]);
  15. ir++;
  16. }
  17. }
  18. //左边数组、右边数组还有剩余时,将剩余元素加入结果数组
  19. while(il < left.length){
  20. result.push(left[il]);
  21. il++;
  22. }
  23. while(ir < right.length){
  24. result.push(right[ir]);
  25. ir++;
  26. }
  27. return result;
  28. }
  29. //递归分解
  30. function mergeSort(array){
  31. let length = array.length;
  32. //array长度为1 不需要排序 直接返回
  33. if(length <= 1){
  34. return array;
  35. }
  36. //找到中间索引值
  37. const mid = parseInt(length / 2);
  38. //截取左半部分和右半部分
  39. const left = array.slice(0,mid);
  40. const right = array.slice(mid);
  41. //递归分解后 选择排序合并
  42. return merge(mergeSort(left),mergeSort(right));
  43. }
输入:
var nums = [7,3,2,6,0,1,5,4];

输出:

  1. const result = mergeSort(nums);
  2. console.log(result);

输出结果:

[0, 1, 2, 3, 4, 5, 6, 7]

资料补充

如何在vscode中使用运行js(输出结果出现乱码) ?

  1. 在vscode中安装Code Runner插件
  2. node.js官网下载安装node.js
  3. 安装完毕后重启电脑即可运行
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/65558
推荐阅读
相关标签
  

闽ICP备14008679号