冒泡排序,选择排序,插入排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序,选择排序,插入排序相关的知识,希望对你有一定的参考价值。

从今天开始希望自己的博客可以持续的更新起来,由于本人能力有限,所以有些内容可能会有疏漏或者不全面,希望大家可以指出来,让我们一起学习,一起进步。

今天的内容是最简单的三个排序算法,冒泡排序,选择排序,插入排序,它们的时间复杂度都是O(N^2)。

冒泡排序:首先第一个数与第二个数比较,如果前面的大于后面的就交换两个数,然后第二个与第三个比较,直到比较到最后,此时最后一个数为数组最大值,然后循环次步骤,第二次比较到倒数第二位,这样经过两次循环最后两位就排好了,经过N次循环,数组就拍好了

选择排序:从数组中选择出最小的一个数,交换这个数和数组第一个数,这样第一个数就排好了,然后从第二个数到最后一个数中再选出最小的与第二个数交换,这样操作N次,数组排好顺序。

插入排序:首先比较数组第二个数和第一个数的大小,将小的放到前面。然后让第三个数依次与第二个数和第一个数比较,找到第三个数插入的位置,使得前三个数字有序,然后是第四位,如此循环,直到最后,数排好顺序。

下面上代码:由于我是学习前端的所以代码用javascript语言描述

 

//冒泡排序
function sortBubble(array){
    var length=array.length;
    var cache;
    for(var j=length-1;j>0;j--){
        for(var i=0;i<j;i++){
            if(array[i]>array[i+1]){
                cache=array[i];
                array[i]=array[i+1];
                array[i+1]=cache;
            }
        }
    }
    return array;
} 
//选择排序
function sortSelection(array){
    var length=array.length;
    var currentMin,cache;
    for(var j=0;j<length;j++){
        currentMin=j;
        for(var i=j+1;i<length;i++){
            if(array[i]<array[currentMin])
                currentMin=i;
        }
        cache=array[j];
        array[j]=array[currentMin];
        array[currentMin]=cache;
    }
    return array;
}
//插入排序
function sortInsert(array){
    var length=array.length;
    var cache;
    for(var i=1;i<length;i++){
        for(var j=i-1;j>0;j--){
            if(array[i]<array[j]){
                cache=array[i];
                array[i]=array[j];
                array[j]=cache;
                i=j;
            }else{
                break;
            }
        }
    }
    return array;
}

 

代码都经过我亲自测试,可以完成对数组进行排序

以上是关于冒泡排序,选择排序,插入排序的主要内容,如果未能解决你的问题,请参考以下文章

三大基础排序算法(冒泡排序,选择排序,插入排序)

排序算法学习(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序)

[leetcode]排序算法(冒泡排序,选择排序,插入排序,快速排序,计数排序)

总结:大厂面试常考手撕代码 —— JavaScript排序算法(冒泡排序选择排序插入排序快速排序)

JavaScript算法(冒泡排序选择排序与插入排序)

直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚