ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何对数组进行排序?

2022-06-13 15:03:33  阅读:142  来源: 互联网

标签:arr right quickSort 如何 length 数组 var pivot 排序


我们有一个需要排序的数组:

let arr = [86, 24, 64, 48, 15, 30, 90, 49]

 

 

首先,定义一个参数为数组的快速排序函数。

var quickSort = function(arr) {};

然后,检查数组中的元素个数,如果小于等于 1,则返回。

var quickSort = function(arr) {  if (arr.length <= 1) { return arr; }};

接下来,选择枢轴,将其与原始数组分开,并定义两个空数组来存储两个子集。

var quickSort = function(arr) {
  if (arr.length <= 1) { return arr; }
  var pivotIndex = Math.floor(arr.length / 2) ;
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];
};

然后,开始遍历数组,小于主元的元素放入左子集中,大于主元的元素放入右子集中。

var quickSort = function(arr) {
  if (arr.length <= 1) { return arr; }
  var pivotIndex = Math.floor(arr.length / 2) ;
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];
  for (var i = 0; i < arr.length; i++){
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
};

最后,通过使用递归重复这个过程,得到排序后的数组。

var quickSort = function(arr) {
  if (arr.length <= 1) { return arr; }
  var pivotIndex = Math.floor(arr.length / 2);
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];
  for (var i = 0; i < arr.length; i++){
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
};

用法:

 

标签:arr,right,quickSort,如何,length,数组,var,pivot,排序
来源: https://www.cnblogs.com/PotatosMe/p/16370832.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有