1.快速排序:原理就是在中间选一个数,将比这个数大的放在这个数的右边,将比这个数小的放在左边,多次递归调用。
function qsort(l,r,a){
var i=l,j=r,flag = a[i];
if(i>=j) return ;
while(i<j){
while(i<j&&a[j]>=flag){
j--;
}
a[i]=a[j];
while(i<j&&a[i]<=flag){
i++;
}
a[j]=a[i];
}
a[i]=flag;
qsort(l,i-1,a);
qsort(i+1,r,a);
}
2.插入排序:从第二个数开始选择,和这个数前面的所有数比较,给这个数找到对应的位置插入,如果有比这个数大的要将其整体往后移,代码如下:
var arr = [2,5,7,6,4,9,8,1];
var a = insert(arr, arr.length);
function insert(arr,n){
for(var i=1;i<n;i++){
var t = arr[i];
for(var j=i;j>0;j--){
if(t<arr[j-1]){
arr[j]=arr[j-1];
}
else{
break;
}
}
arr[j]=t;
}
return arr;
}
3.冒泡排序:就是跑一遍这个数组,选出最小(或最大),跑n-1遍就排好序了
var arr = [2,5,7,6,4,9,8,1];
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr.length;j++){
if(arr[j]>arr[j+1]){
var t = arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
4.选择排序:依次选择最小(或最大)
var arr = [2,5,7,6,4,9,8,1];
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
var t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}