基本排序算法的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);