1、插入排序
原理:
示例代码:
//插入排序
function insert(a, n) {
let i, j, temp;
for(i = 1; i < n; i++) {
temp = a[i]
for(j = i - 1; j >= 0 && a[j] > temp; j--) {
a[j + 1] = a[j]
}
//找到插入位置
a[j + 1] = temp
}
return a
}
let arr = [8, 4, 7, 1]
console.log(insert(arr, 4))
2、希尔排序
希尔排序是优化的插入排序,即先分组,再插入排序。
示例代码:
//希尔排序
function shell(a, n) {
let i, j, temp, stet;
//先分组
for(step = Math.floor(a.length / 2); step >= 1; step = Math.floor(step / 2)) {
//i 从step开始
for(i = step; i < n; i++) {
temp = a[i]
for(j = i - step; j >= 0 && a[j] > temp; j = j - step) {
a[j + step] = a[j]
}
//找到插入位置
a[j + step] = temp
}
}
return a
}
let arr2 = [8, 4, 7, 1]
console.log(shell(arr2, 4))
3、冒泡排序
//冒泡排序
function bubble(a, n) {
let i, j, temp;
for (i=n-1;i>=1;i--) {
for (j=1;j<i;j++) {
if (a[j-1]>a[j]) {
temp = a[j-1]
a[j-1] = a[j]
a[j] = temp
}
}
}
return a
}
let arr3 = [8, 4, 7, 1]
console.log(bubble(arr2, 4))
说明:i指针从后往前。
4、选择排序
var example=[8,94,15,88,55,76,21,39];
function selectSort(arr){
var len=arr.length;
var minIndex,temp;
for(i=0;i<len-1;i++){
minIndex=i;
for(j=i+1;j<len;j++){
if(arr[j]<arr[minIndex]){
minIndex=j;
}
}
temp=arr[i];
arr[i]=arr[minIndex];
arr[minIndex]=temp;
}
return arr;
}
console.log(selectSort(example));
5、快速排序
http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html
var quickSort = function(arr) {
if (arr.length <= 1) { return arr; }
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var 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));
};
6、归并排序
https://www.cnblogs.com/chengxiao/p/6194356.html
排序算法比较:
排序算法比较:https://www.cnblogs.com/end/archive/2011/10/22/2220995.html