冒泡:
var arr1=[3,2,2,1,5,8,4,7,6,9]
function BubbleSort(arr){
for(var i=1; i<arr.length;i++){//外层循环代表循环次数,与下标无关
for(var j=0;j<arr.length-i;j++){
if(arr[j]>arr[j+1]){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
return arr;
}
BubbleSort(arr1)
console.log(arr1)
插入
var a=[3,2,2,1,5,8,4,7,6,9]
function insertSort(){
for(var i=1;i<a.length;i++){
var temp=a[i];
for(j=i-1;j>-1;j--){
if(a[j]>temp){
a[j+1]=a[j];
}
else{
break;
}
}
a[j+1]=temp;
}
}
insertSort(a)
console.log(a)
快排:
function quickSort(arr,l,r){
if(l < r){
var i = l, j = r, x = arr[i];
while(i<j){
while(i<j && arr[j]>x)
j--;
if(i<j)
//这里用i++,被换过来的必然比x小,赋值后直接让i自加,不用再比较,可以提高效率
arr[i++] = arr[j];
while(i<j && arr[i]<x)
i++;
if(i<j)
//这里用j--,被换过来的必然比x大,赋值后直接让j自减,不用再比较,可以提高效率
arr[j--] = arr[i];
}
arr[i] = x;
quickSort(arr, l, i-1);
quickSort(arr, i+1, r);
}
}
归并:
function merge(left, right) {
var result = [],
il = 0,
ir = 0;
while (il < left.length && ir < right.length) {
if (left[il] < right[ir]) {
result.push(left[il++]);
} else {
result.push(right[ir++]);
}
}
while(left[il]){
result.push(left[il++]);
}
while(right[ir]){
result.push(right[ir++]);
}
return result;
}