js数组排序

**

1.数组的sort()方法**

var array = [1,4,-8,-3,6,12,9,8];
function compare(val1,val2){
    return val1-val2;
};
array.sort(compare);
document.write(array);

sort()方法按照升序排列数组项,会调用每个数组项的toString()转型方法,然后比较得到的字符串。

toString()方法是把布尔值或BooleanObject转换为字符串,并返回结果。

compare()函数方法是一个比较函数,作为sort()方法的参数。

2丶冒泡排序

思路:重复遍历数组中的元素,依次比较两个相邻的元素,如果前一个元素大于后一个元素,就依靠第三个变量将它们换过来,直到所有元素遍历完。


js数组排序_第1张图片
在这里插入图片描述
var arr = [1,4,-8,-3,6,12,9,8];
for(var j=0;jarr[i+1]){
            var temp = arr[i];
            arr[i] = arr[i+1];
            arr[i+1] = temp;
        }
    } 
}

3、选择排序

思路:将第一位依次与后面的元素相比较,得到最小值,与第一位交换。再用第二位依次与后面元素相比较,得到最小值,与第二位交换。从原始数据中找到最小元素,并放在数组的最前面。然后再从下面的元素中找到最小元素,放在之前最小元素的后面,直到排序完成。


js数组排序_第2张图片
在这里插入图片描述
 var arr = [5,99,2,9,1,5,67,7,10,23]
    for(var i=0;iarr[j]){                //判断最小值是否为真的最小值
                min = arr[j];              //获取真正的最小值
                minIndex = j;              //获取真正最小值的索引
            }
        }

        arr[minIndex] = arr[i];            //将当前元素放在最小值的位置
        arr[i] = min;                      //将最小值放在当前元素的位置
    }
    console.log(arr);            

4、快速排序

思路:
1、找基准(一般是以中间项为基准)
2、遍历数组,小于基准的放在left,大于基准的放在right
3、递归

js数组排序_第3张图片
image
function quickSort(arr) {
      var left = [], right = [];
      if (arr == null) {
        return arr;
      } else if (arr.length <= 1) {
        return arr;
      }
      var num = arr.splice([Math.floor(arr.length / 2)], 1)[0];

      for (var i = 0; i < arr.length; i++) {
        if (arr[i] <= num) {
          left.push(arr[i]);
        } else {
          right.push(arr[i]);
        }
      }
      return (quickSort(left).concat([num], quickSort(right)));
    }
    alert(quickSort(arr));

5、:插入排序

思路:从第二个元素起,当前元素与靠前的元素依次对比,一、如果当前元素小于靠前的元素,
靠前的元素后移,直到当前元素大于或等于靠前元素,当前元素插入到靠前索引位置后。
二、如果当前元素大于靠前元素,不发生改变。
继续从下一个元素开始遍历数组。直当前一个数组角标preIndex+1=arr.length


js数组排序_第4张图片
在这里插入图片描述
function insertSort(arr) {
      var temp;
      for (var i = 1; i < arr.length; i++) {
        for (var j = i; j >= 0; j--) {
          if (arr[j] < arr[j - 1]) {
            temp = arr[j - 1];
            arr[j - 1] = arr[j];
            arr[j] = temp;
          }
        }
      }
    }
 insertSort(arr);

你可能感兴趣的:(js数组排序)