最近整理了一下常用的排序算法,以备不时之需,仅供参考。
<!DOCTYPE html>
<html>
<head>
<title>排序</title>
</head>
<body>
<script>
/*快速排序--递归实现,选取第一个元素为枢轴,比它晓得放到左边数组,比他大的放到右边数组*/
/*
var quick_sort = function(arr){
if(arr.length<=1){
return arr;
}
var left_arr = [];
var right_arr = [];
var temp = arr[0];
for(var i=1; i<arr.length; i++){
if (arr[i]>=temp) {
right_arr.push(arr[i]);
} else {
left_arr.push(arr[i]);
}
}
return quick_sort(left_arr).concat([temp], quick_sort(right_arr));
}
var arr2 = [2,1,4,6,5];
console.log(quick_sort(arr2));*/
/*冒泡排序--每趟不断将记录两两比较,并按“前小后大”(或“前大后小”)规则交换*/
/*
var bubble_sort = function(arr){
for(var i=0; i<arr.length; i++){
var flag = true;
for(var j=0; j<arr.length-1; j++){
if(arr[j+1] < arr[j]) {
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag = false;
}
}
if(flag){
break;
}
}
return arr;
}
var arr2 = [2,1,4,6,5];
console.log(bubble_sort(arr2));*/
/*插入排序--边插入边排序,保证子序列中随时都是排好序的*/
/*
var insert_sort = function(arr){
for(var i=1;i<arr.length; i++){
var temp = arr[i];
for(var j=i-1; j>=0; j--){
if(temp < arr[j]){
arr[j+1] = arr[j];
arr[j] = temp;
}else{
break;
}
}
}
return arr;
}
var arr2 = [2,1,4,6,5];
console.log(insert_sort(arr2));*/
/*选择排序--每次都找到一个最小的值和前面的交换*/
var selec_sort = function(arr){
var min,temp;
for(var i=0; i<arr.length-1; i++){
min = i;
for(var j=i+1; j<arr.length; j++){
if(arr[j]<arr[min]){
min = j;
}
}
temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
return arr;
}
var arr2 = [2,1,4,6,5];
console.log(selec_sort(arr2));
</script>
</body>
</html>