当前位置: 首页 > 面试题库 >

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

公孙宇
2023-03-14
本文向大家介绍请用js写出几种常见的排序算法?相关面试题,主要包含被问及请用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));
}

 

 类似资料:
  • 本文向大家介绍常见的搜索算法有哪几种?相关面试题,主要包含被问及常见的搜索算法有哪几种?时的应答技巧和注意事项,需要的朋友参考一下 广度优先搜索(BFS) 深度优先搜索(DFS) 爬山法(Hill Climbing) 最佳优先算法(Best-first search strategy)  回溯法 (Backtracking) 分支限界算法(Branch-and-bound Search Algor

  • 本文向大家介绍JavaScript数组排序的六种常见算法总结,包括了JavaScript数组排序的六种常见算法总结的使用技巧和注意事项,需要的朋友参考一下 前言 着急用的话,选择前两个就行了,后面的看看就好。 开发中,遇到数组排序的需求很频繁,这篇文章会介绍几个常见排序思路。 一、希尔排序(性能最好) 如果要从大到小排列,则 while(arr[n] > arr[n - interval] &&

  • 本文向大家介绍JS实现倒序输出的几种常用方法示例,包括了JS实现倒序输出的几种常用方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现倒序输出的几种常用方法。分享给大家供大家参考,具体如下: 1.通过split和数组的逆序输出 2.通过split和reverse 3.通过for循环数组前后调换数据 更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScr

  • 本文向大家介绍js实现常用排序算法,包括了js实现常用排序算法的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了js实现常用排序算法,具体内容如下 1.冒泡排序 2.选择排序  3.插入排序 4.希尔排序 5.归并排序 6.快速排序 总结:算法效率比较: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍请问稳定排序哪几种?相关面试题,主要包含被问及请问稳定排序哪几种?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序 参考回答: 1、快排算法 根据哨兵元素,用两个指针指向待排序数组的首尾,首指针从前往后移动找到比哨兵元素大的,尾指针从后往前移动找到比哨兵元素小的,交换两个元素,直到两个指针相遇,这是一趟排序,经常这趟排序

  • 本文向大家介绍JavaScript中三种常见的排序方法,包括了JavaScript中三种常见的排序方法的使用技巧和注意事项,需要的朋友参考一下 1、快速排序: 2、插入排序 3、冒泡排序 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!