快速排序
取一个中间数,满足条件的放右边,不满足条件的放左边,直到整个数组规则排列
var arr=[12,25,56,35,23,14,15,51,51,6,7];
function quickSort(arr) {
if(arr.length<2){
return arr;
}
var val=arr.splice(Math.floor(arr.length/2),1),left=[],right=[];
for(i in arr){
if(arr[i]>val){
right.push(arr[i]);
}else{
left.push(arr[i]);
}
}
return quickSort(left).concat(val,quickSort(right));
}
console.log(quickSort(arr));
简单选择排序
将每次循环的第一个数与后面所有的数相比较,比它小就记录它的下标,直到找到这次循环的最小值下标,使这次循环的第一个数与这个最小值交换位置
var arr = [12, 25, 56, 35, 23, 14, 15, 51, 51, 6, 7];
function easy(arr) {
for (i in arr) {
var index = i;
for (var j = +i + 1; j < arr.length; j++) {
if (arr[index] > arr[j]) {
index = j;
}
}
var temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
return arr;
}
console.log(easy(arr));
选择排序
将每次循环的第一个数与后面所有的数相比较,比它小就交换,使每次循环的第一个数永远是这次循环的数里面的最小数
var arr=[12,25,56,35,23,14,15,51,51,6,7];
function easy(arr) {
for(i in arr){
for(var j=+i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
var temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
return arr;
}
console.log(easy(arr));
冒泡排序
将相邻的两个数相比较,只要前面的数比后面的数大就交换,使每次循环的第一个数永远是这次循环的数里面的最小数
var arr = [12, 25, 56, 35, 23, 14, 15, 51, 51, 6, 7];
function maopao(arr) {
for (i in arr) {
// for(var j=arr.length-1;j>=i;j--){
// if(arr[j-1]>arr[j]){
// var temp=arr[j-1];
// arr[j-1]=arr[j];
// arr[j]=temp;
// }
// }
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
console.log(maopao(arr));