让前端飞

js手写数组排序

2019-02-14  本文已影响1人  tcz520

一.  js的sort()方法

sort() 方法用于对数组的元素进行排序,同时需要一个额外的排序函数sortNumber()

function sortNumber(a,b){

    return a - b

}

var arr = [1, 1000, 100]

arr.sort(sortNumber)

二.  冒泡排序(从后向前)

重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。

function sortArray(arr){

    for(var j=0;j<arr.length-1;j++){

    // 两两比较,如果前一个比后一个大,则交换位置。     

        for(var i=0;i<arr.length-1-j;i++){

            if(arr[i]>arr[i+1]){

                var temp = arr[i];

                arr[i] = arr[i+1];

                arr[i+1] = temp;

            }

        }

    }

}

三.  选择排序

每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。

function sortArray(arr){

    for(var i=0;i<arr.length;i++){

        // 设置当前范围最小值和索引        

        var min = arr[i];

        var minIndex = i;

        // 在该范围选出最小值        

        for(var j=i+1;j<arr.length;j++){

            if(min>arr[j]){

                min = arr[j];

                minIndex = j;

            }

        }

        // 将最小值插入,并将原来位置的最小值删除   

        arr.splice(i,0,min);

        arr.splice(minIndex+1,1);

    }

}

四.  插入排序

每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。

function sortArray(arr){

// 假设第0元素是有序序列,第1元素之后是无序的序列。从第1元素开始依次将无序序列的元素插入到有序序列中

    for(var i=1; i<arr.length;i++){

        if(arr[i]<arr[i-1]){

            // 取出无序序列中需要插入的第i个元素            

            var temp = arr[i];

            // 定义有序中的最后一个位置            

            var j = i-1;

            arr[i] = arr[j];

            // 比较大小,找到插入的位置            

            while(j>=0&&temp<arr[j]){

                arr[j+1] = arr[j];

                j--;

            };

            // 插入           

            arr[j+1] = temp;

        }

    }

  }

上一篇下一篇

猜你喜欢

热点阅读