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


    冒泡排序:  

    对数组的中的数据,依次比较相邻两数的大小。

    如果前面的数据大于后面的数据,就交换这两个数。

    时间复杂度O(n^2) 
     1 function bubble(array){
     2     var temp;
     3     for(var i=0; i<arr.length; i++){
     4         for(var j=0; j<arr.length; j++){
     5             if(arr[j]>arr[j+1]){
     6                 temp = arr[j+1];
     7                 arr[j+1] =arr[j];
     8                 arr[j]=temp;
     9             }
    10         }console.log(arr);
    11     }
    12 }//冒泡排序

    选择排序:

    首先从原始数组中选择一个最小的数据,和第一个位置1的数据交换。

    再从剩下的n-1个数据中选择次小的数据,将其和第二个位置的数据交换。

    不断重复,知道最后两个数据完成交换。

    时间复杂度O(n^2)
    function selectionSort(array){
        var min,temp;
        for(var i=0; i<array.length-1; i++){
            min=i;
            for(var j=i+1; j<array.length; j++){
                if(array[j]<array[min]){
                    min=j;
                }
            }
            swap(array,min,i);
                
        }
            console.log(array);
    }//选择排序
    function swap(array,i,j){
        var temp =array[i];
        array[i]=array[j];
        array[j]=temp;
    }//两个数字交换  

    插入排序:

    首先对前两个数据从小到大比较。

    接着将第三个数据与排好的前两个数据比较,将第三个数据插入合适的位置。以此类推。

    (插入排序有两个循环,外循环将数组挨个移动,内循环将对外循环选中的元素及他前面的数进行比较。)

    时间复杂度O(n^2) 

     1 function insertSort(arr){
     2     var temp, j;
     3     for(var i=1; i<arr.length; i++){
     4         temp =arr[i];
     5         j=i;
     6         while(j>0 && arr[j-1]>temp){
     7             arr[j]=arr[j-1];
     8             j--;
     9         }
    10         arr[j]=temp;
    11 
    12     }
    13         
    14 }
  • 相关阅读:
    DOS 批处理命令For循环命令详解
    怎样在电脑上下载哔哩哔哩的视频?
    华为事件启思:美国究竟有多少高科技公司?
    常用电子书下载收藏
    [置顶] 【玩转cocos2d-x之七】场景类CCScene和布景类CCLayer
    递归循环JSON
    POJ_1365_Prime_Land
    WIX在VS2012中如何制作中文安装包
    PKU Online Judge 1054:Cube (设置根节点)
    MFC——AfxParseURL用法
  • 原文地址:https://www.cnblogs.com/xxza/p/4678473.html
Copyright © 2020-2023  润新知