冒泡排序
var arr=[45,23,11,20,5,3,45,9,2,12,11]
for(var i=0;i<arr.length-1;i++){
for(var j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
var t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
console.log(arr);
选择排序
var arr=[45,23,11,20,5,3,45,9,2,12,11]
for(var i=0;i<arr.length-1;i++){
var min=i;
for(var j=i+1;j<arr.length;j++){
if(arr[min]>arr[j]){
min=j
}
}
if(min!=i){
var t=arr[min];
arr[min]=arr[i];
arr[i]=t;
}
}
console.log(arr);
快速排序
- 定义一个方法,输入一个数组
- 如果数组长度小于2,就返回输入的数组(数组里只有一个数了,不用比较了)
- 如果数组长度大于等于2,找出中间下标,用数组的length/2,遇到不能被整除的,向下取整
- 通过中间下标,得到中间数,并且要从原来的数组中拿出来
- 准备两个空数组,左边和右边的空数组
- 大于中间数放置到右边数组,小于中间数放置到左边数组
- 递归继续拆分,拆到数组中只有一个元素了,就不拆了返回结果
进行合并 左边数组+中间值+右边数组
var arr=[45,23,11,20,5,3,45,9,2,12,11];
function quickSort(arr){
if(arr.length<2){
return arr;
}
var middleIndex=parseInt(arr.length/2);
var middleValue=arr.splice(middleIndex,1);
var leftArr=[],rightArr=[];
for(var i=0;i<arr.length;i++){
if(arr[i]>middleValue){
rightArr.push(arr[i]);
}else{
leftArr.push(arr[i]);
}
}
return quickSort(leftArr).concat(middleValue,quickSort(rightArr));
}
console.log(quickSort(arr));