基础排序算法

排序算法

交换数组元素

function swap(arr, index1, index2) {
var tmp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = tmp;
}

冒泡排序

function bubbleSort(arr) {
if(arr.length <= 1) {return arr}
for(var i = arr.length; i >= 2; i--) {
for(var j = 0; j <= i-1; j++) {
if(arr[j] > arr[j+1]) {
swap(arr, j, j+1);
}
}
}
return arr;
}

选择排序

function selectSort(arr) {
if(arr.length <= 1) {return arr}
var min;
for(var i = 0; i < arr.length-1; i++) {
min = i;
for(var j = i+1; j < arr.length; j++) {
if(arr[min] < arr[j]) {
min = j
}
swap(arr, i, min)
}
}
return arr;
}

插入排序

function insertSort(arr) {
if(arr.length <= 1) {return arr}
var tmp, inner;
for(var outer = 1; outer < arr.length; outer++) {
temp = arr[outer];
inner = outer;
while(inner > 0 && (arr[inner-1] >= temp)) {
arr[inner] = arr[inner-1];
--inner;
}
arr[inner] = temp;
}
return arr;
}

快速排序

function qSort(arr) {
if(arr.length == 0) {
return [];
}
var lesser = [];
var greater = [];
var pivot = arr[0];
for(var i = 0; i < arr.length; i++) {
if(arr[i] < pivot) {
lesser.push(arr[i])
} else {
greater.push(arr[i])
}
}
return qSort(lesser).concat(pivot,qSort(greater));
}

posted @ 2018-03-18 16:01  YFIFE  阅读(123)  评论(0)    收藏  举报