基本排序算法总结

1.冒泡排序(最大值置后

var sortBubble = function (arr) {
//如果数组<=1,则直接返回
if (arr.length <= 1) {
return arr;
}
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
};

2.快速排序(left/ right

var quickSort = function (arr) {
//如果数组<=1,则直接返回
if (arr.length <= 1) {
return arr;
}
var pivotIndex = Math.floor(arr.length / 2);
//找基准,并把基准从原数组删除
var pivot = arr.splice(pivotIndex, 1)[0];
//定义左右数组
var left = [], right = [];

//比基准小的放在left,比基准大的放在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));
}

3.选择排序(最小值置前

var selectionSort = function (arr) {
if (arr.length <= 1) {
return arr;
}
for (var i = 0; i < arr.length; i++) { //缩小选择的范围
var min = arr[i]; //假定范围内第一个为最小值
var index = i; //记录最小值的下标
for (var j = i + 1; j < arr.length; j++) { //在范围内选取最小值
if (arr[j] < min) {
min = arr[j];
index = j;
}
}
if (index !== i) { //把范围内最小值交换到范围内第一个
var temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
console.log(arr);
console.log("---------------------");
}
return arr;
}

4.插入排序

var insertionSort = function (arr) {
if (arr.length <= 1) {
return arr;
}
for (var i = 0; i < arr.length - 1; i++) {
//i代表已经排序好的序列最后一项下标
var insert = arr[i+1];
var index = i + 1;//记录要被插入的下标
for (var j = i; j >= 0; j--) {
if (insert < arr[j]) {
//要插入的项比它小,往后移动
arr[j+1] = arr[j];
index = j;
}
}
arr[index] = insert;
console.log(arr);
console.log("-----------------------");
}
return arr;
}





原文地址:https://www.cnblogs.com/LP1204/p/8478772.html