一、快速排序
采用二分法,取出中间数,数组每次和中间数比较,小的放到左边,大的放到右边.算法平均复杂度:n(n log n)
var arr = [2,3,4,1,3,4,5,6,7,5,3];
function quickSort(arr){
if(arr.length==0){
return [];
}
var cIndex = Math.floor(arr.length / 2);
var c = arr.splice(cIndex,1);
var l = [];
var r = [];
for(var i = 0;i<arr.length;i++){
if(arr[i] <c){
l.push(arr[i]);
} else {
r.push(arr[i]);
}
}
}
二、冒泡排序
每次比较相邻的两个数,如果一个比前一个小,换位置.算法平均复杂度:n(n^2)
var arr = [3,1,2,3,4,4,5];
function bubbleSOrt() {
for(var i = 0;i<arr.length-1;i++){
for(j=0;j<arr.length - 1;j++){
if(arr[j+1]<arr[j]){
var temp;
temp= arr[i];
arr[i] = arr[j+1];
arr[j+1] = temp
}
}
}
return arr;
}
三、选择排序
从所有记录中选出最小的一个数据元素与第一个位置的记录交换,然后在剩下的记录当中再找最小的与第二个位置的记录交换,循环到只剩下最后一个数据元素为止 复杂度n(n^2)
function selection_sort(arr){
var minIndex
var temp
var len = arr.length
for(var i = 0;i<len;i++){
minIndex = i;
for(var j=i+1;j<len;j++) {
if(arr[i]<arr[minIndex]){
minIndex = j
}
}
}
}
四、sort函数
用sort()为数组排序,
let arr = ['A','B','C','D']
arr.sort()
console.log(arr)
sort方法会调用每个数组项的toString()方法,得到字符串,然后再对得到的字符串进行排序
let arr = [15,8,25,3]
arr.sort((x,y)=> x - y) // 正序
console.log(arr) // [3,8,15,25]
arr.sort((x,y)=> y - x) // 倒序