用js实现算法:冒泡排序、插入排序和快速排序
一、冒泡排序
1 function bubbleSort(arr){
2 for(var i=0;i<arr.length;i++){
3 for(var j=0;j<arr.length-i-1;j++){
4 if(arr[j]>arr[j+1]){
5 var temp=arr[j];
6 arr[j]=arr[j+1];
7 arr[j+1]=temp;
8 }
9 }
10
11 }
12 }
13
14 var arr=[12,4,9,89,10];
15 bubbleSort(arr);
16 console.log(arr);
二、插入排序
1 function insertSort(arr){
2 //从1开始遍历arr
3 for(var i=1;i<arr.length;i++) {
4 var t=arr[i];//将当前值保存在t中
5 var p=i-1;//定义p为i-1
6 //反复: p>=0&&p位置的值>t
7 while(p>=0&&arr[p]>t){
8 //p位置的值,赋值给p+1位置
9 arr[p+1]=arr[p];
10 p--;//p减一
11 }//(循环退出)
12 arr[p+1]=t;//将t保存到p+1位置
13 }
14 return arr;
15 }
16
17 var a=[5,1,2,4,8,6,3,77];
18 var res=insertSort(a);
19 console.log(res);
三、快速排序
1 function quickSort(arr){
2 if(arr.length>1){
3 var c=parseInt(arr.length/2);
4 var center=arr.splice(c,1);
5 for(var i= 0,left=[],right=[];i<arr.length;i++){
6 if(arr[i]<center) left.push(arr[i]);
7 else right.push(arr[i]);
8 }
9 return quickSort(left).concat(center,quickSort(right));
10 }else{
11 return arr;
12 }
13 }
14
15 var a=[5,1,2,4,8,6,3,7];
16 var res=quickSort(a);
17 console.log(res);
或
1 function quickSort(arr) {
2 if(arr.length<=1) {
3 return arr;
4 }
5 let leftArr = [];
6 let rightArr = [];
7 let q = arr[0];
8 for(let i = 1,l=arr.length; i<l; i++) {
9 if(arr[i]>q) {
10 rightArr.push(arr[i]);
11 }else{
12 leftArr.push(arr[i]);
13 }
14 }
15 return [].concat(quickSort(leftArr),[q],quickSort(rightArr));
16 }
17
18 module.exports = quickSort;
愿你有好运气
如果没有
愿你在不幸中学会慈悲
愿你被很多人爱
如果没有
愿你在寂寞中学会宽容
愿你忠于自己
活的认真
笑得放肆
如果没有
愿你在不幸中学会慈悲
愿你被很多人爱
如果没有
愿你在寂寞中学会宽容
愿你忠于自己
活的认真
笑得放肆
QQ:266 - 289 - 8015
Email:sunyuweb@163.com
Email:sunyuweb@163.com