基础排序算法
排序算法
交换数组元素
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));
}
春天的雨,夏天的风,只为更好的自己和最爱的你!