js 排序算法:
首先自定义一个数组 其中包含几个数字为后续调用各种排序函数传参数
//自定义三个数字5 10 20 进行降幂排序
var a=[5,10,20,50,23];
1.sort()排序
只能对字符进行排序,如果要对数字进行排序就要使用“比较函数(这里是sortby(),没有指定的名字,自己取名)”进行调用
从小到大排序为a-b,从大到小为b-a
function sortby(a,b){
return b-a;
}
document.write(a.sort(sortby));
2.选择排序
每次循环都找到最大的元素,然后与前边排序好的最后一位进行交换
//降序
function selectSort(a){
var min=null
for(var i=0;i<a.length-1;i++){
min=i;
for(var j=i+1;j<a.length;j++){
if(a[j]>a[min]){
min=j;
}
if(min!=i){
var c=a[min];
a[min]=a[j];
a[j]=c;
}
}
}
return a;
}
document.write(selectSort(a))
3.冒泡排序
两个相邻的元素进行比较,小的往后放
function bubbleSort(a){
for(var i=0;i<a.length-1;i++){
for(var j=0;j<a.length-i-1;j++){
if(a[j]<a[j+1]){
var c=a[j];
a[j]=a[j+1];
a[j+1]=c;
}
}
}
return a;
}
document.write(bubbleSort(a));
4.插入排序
从数组中下标为1的数开始,与前边的元素进行比较,小的往后放
function insertSort(a) {
for (var i = 1; i <a.length; i++) {
// 待插元素
var item = a[i];
//排序后的末尾元素
var j = i - 1;
// 从排序好的末尾元素开始遍历
// 如果大于待插元素就把当前元素往后挪
while (j >= 0 && a[j] > item) {
arr[j + 1] = a[j];
j--;
}
// 插入待插元素
a[j + 1] = item;
}
return arr;
}
document.write(insertSort(a));
5.快速排序
function quickSort(a){
if(a.length<=1){
return arr
}
var midindex=Math.floor(arr.length/2)
var miditem=a.splice(midindex,1)[0]
var left=[]
var right=[]
for(var i=0;i<a.length;i++){
if(miditem>a[i]){
left.push(a[i])
}else{
right.push(a[i])
}
}
return quickSort(left).concat(miditem,quickSort(right))
}
document.write(quickSort(a));