栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

请用js写出几种常见的排序算法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

请用js写出几种常见的排序算法?

参考回答:

基本排序算法:冒泡,选择,插入,希尔,归并,快排

冒泡排序:

function bubbleSort(data){    var temp=0;    for(var i=data.length;i>0;i--){        for(var j=0;j<i-1;j++){ if(data[j]>data[j+1]) { temp=data[j]; data[j]=data[j+1]; data[j+1]=temp; }        }    }    return data;}

选择排序:

function selectionSort(data){    for(var i=0;i<data.length;i++){    var min=data[i];    var temp;    var index=1;    for(var j=i+1;j<data.length;j++){        if(data[j]<min)        { temp=data[j]; data[j]=min; min=temp;        }    }    temp=data[i];    data[i]=min;    data[index]=temp}

插入排序:

function insertSort(data){    var len=data.length;    for(var i=0;i<len;i++){        var key=data[i];        var j=i-1;        while(j>=0&&data[j]>key){ data[j+1]=data[i]; j--;        }        data[j+1]=key;    }    return data;}

希尔排序:

function shallSort(array) {    var increment = array.length;    var i;    var temp; //暂存    do {    //设置增量    increment = Math.floor(increment / 3) + 1;    for (i = increment ; i < array.length; i++) {        if ( array[i] < array[i - increment]) { temp = array[i]; for (var j = i - increment; j >= 0 && temp < array[j]; j -= increment) {     array[j + increment] = array[j]; } array[j + increment] = temp; }        }    }    while (increment > 1)    return array;}

 

归并排序:

function mergeSort ( array ) {    var len = array.length;    if( len < 2 ){    return array;    }    var middle = Math.floor(len / 2),    left = array.slice(0, middle),    right = array.slice(middle);    return merge(mergeSort(left), mergeSort(right));}function merge(left, right){    var result = [];    while (left.length && right.length) {        if (left[0] <= right[0]) { result.push(left.shift());        } else { result.push(right.shift());        }    }    while (left.length)    result.push(left.shift());    while (right.length)    result.push(right.shift());    return result;}

快速排序

function quickSort(arr){    if(arr.length==0)    return [];    var left=[];    var right=[];    var pivot=arr[0];    for(var i=0;i<arr.length;i++){        if(arr[i]<pivot){        left.push(arr[i]);    }        else{ right.push(arr[i]);        }    }    return quickSort(left).concat(pivot,quickSort(right));}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/363586.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号