常用排序算法的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);
}
}
浙公网安备 33010602011771号