您的位置:首页 > Web前端 > JavaScript

基本排序算法的JavaScript实现

2016-08-24 16:33 429 查看

基本排序算法的JavaScript实现

前言

最近,复习了一下基本的排序算法,以前在校使用C语言实现的,现在由于自己做的是前端开发,所以就动手使用JavaScript实现了一些基本排序算法。

内容

以下是部分基本排序算法的实现:

插入排序(Insertion sort)

insertionSort.js

function insertionSort(arr){
var i, j, len, tmp;
for(i = 1, len = arr.length; i < len; i++){
tmp = arr[i];
for(j = i - 1; j >= 0; j--){
if(tmp < arr[j]){
arr[j + 1] = arr[j];
}else{
break;
}
}
arr[j + 1] = tmp;
}
}

var arr = [8, 2, 4, 9, 3, 6];
console.log('Before sorting: ', arr);
insertionSort(arr);
console.log('After sorting: ', arr);


归并排序(Merge sort)

mergeSort.js

function mergeSort(arr){
var k, leftArr, rightArr,
sorted = [],
len = arr.length;
if(len === 1){
return arr;
}
k = Math.floor(len / 2);
leftArr = mergeSort(arr.slice(0, k));
rightArr = mergeSort(arr.slice(k, len));
while(leftArr.length > 0 && rightArr.length > 0){
if(leftArr[0] <= rightArr[0]){
sorted.push(leftArr.shift());
}else{
sorted.push(rightArr.shift());
}
}
sorted = sorted.concat(leftArr).concat(rightArr);
return sorted;
}

var arr = [8, 2, 4, 9, 3, 6];
console.log('Before sorting: ', arr);
arr = mergeSort(arr);
console.log('After sorting: ', arr);


快速排序(Quicksort)

quicksort.js

function quicksort(arr, p, r){
var i, j, pivot, tmp;
if(p < r){
for(i = p - 1, j = p, pivot = arr[r]; j < r; j++){
if(arr[j] <= pivot){
i++;
tmp = arr[j];
arr[j] = arr[i];
arr[i] = tmp;
}
}
tmp = arr[j];
arr[j] = arr[i + 1];
arr[i + 1] = tmp;
quicksort(arr, p, i);
quicksort(arr, i + 2, r);
}
}

var arr = [8, 2, 4, 9, 3, 6];
console.log('Before sorting: ', arr);
quicksort(arr, 0, 5);
console.log('After sorting: ', arr);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript 排序算法