其他分享
首页 > 其他分享> > 如何对数组进行排序?

如何对数组进行排序?

作者:互联网

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

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