常用排序算法的JS实现
很基础的排序算法,真的要说清楚,写正确也不太容易。刚好想起来了,就用JS把插入排序,冒泡排序和逼格高一点儿的快排写了一下, 有时间还会来追加别的如归并排序等
var arr=[5,2,1,2,4]; //直接插入排序(插入排序):找到一个最小的有序队列(第一二个数),将后续的值插入到有序队列里的相应位置 function insertSort(arr){ for(var i=1;i<arr.length;i++){ var j=i-1; var key=arr[i]; while(arr[j]>key && j>=0){ arr[j+1]=arr[j]; arr[j]=key; j-- } } } //冒泡排序: 一开始写的时候,写成了由大到小排序 var arr=[5,2,1,2,4]; function bubbleSort(arr){ for (var j=arr.length;j>0;j--){ for(var i=0;i<j-1;i++){ if(arr[i]>arr[i+1]){ var temp=arr[i+1]; arr[i+1]=arr[i]; arr[i]=temp; } } } return arr; } //标准的冒泡排序,找出每趟里最小的值来组成一个有序队列 var arr=[5,2,1,2,4]; function bubbleSort(arr){ for(i=0;i<arr.length;i++){ var j=arr.length-1; for(;j>i;j--){ if (arr[j]<arr[j-1]) { temp=arr[j-1]; arr[j-1]=arr[j]; arr[j]=temp; }; } } } //快速排序:用二分和递归的方法进行排序 var a=[5,4,3,2,1]; var b =[5,4,6,8,4,9,23,34,1276,45,34,6,78,6,45,5,6,46,57,78976,6,78,234,234,5678,2345,7,234]; var c=[1,2,-1]; function quickSort(arr,s,e){ if (s<e) { var i=s; var j=e; var key=arr[s]; while(i!=j){ while(arr[j]>=key && j>i){ j-- } while(arr[i]<=key && j>i){ i++ } if (j>i) { var temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } arr[s]=arr[i]; arr[i]=key; quickSort(arr,s,i-1); quickSort(arr,i+1,e); } }