排序

作者: 垂直居中的句号 | 来源:发表于2021-04-20 17:08 被阅读0次

    https://www.cnblogs.com/onepixel/p/7674659.html

    1. 冒泡排序

    比较相邻的两个元素,每次会排出一个最大/最小的

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

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

            //升序排列

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

            int temp = arr[j];

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

            arr[j+1]=temp;

        }

    }

    2.选择排序

    当前元素和其他元素比较,选择一个最大/最小元素,时间复杂度是O(n^2)

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

        int minindex =i;

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

            //升序

             if(arr[j]<arr[minindex]){

                    minindex=j;

            }

     int temp = arr[i];

    arr[i]= arr[minindex];

    arr[minindex]=temp;

        }

    3.插入排序

    拿当前元素和他之前的元素比较,如果该元素比之前的元素小,则之前的元素后移,反之则插入该位置

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

       int temp =a[i];

       int j=i-1;

      for(;j>0&&a[j+1]<a[j];){

            //升序

                a[j+1]=a[j];

                j--;

     }

     a[j]=temp;

    }

    4. 快速排序(好难 。。。。。。看的模模糊糊)

    快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:

    从数列中挑出一个元素,称为 “基准”(pivot);

    重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;

    递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

    function quickSort(arr, left, right) {

        varlen = arr.length,

            partitionIndex,

            left =typeofleft !='number'? 0 : left,

            right =typeofright !='number'? len - 1 : right;

        if(left < right) {

            partitionIndex = partition(arr, left, right);

            quickSort(arr, left, partitionIndex-1);

            quickSort(arr, partitionIndex+1, right);

        }

        returnarr;

    }

    function partition(arr, left ,right) {    // 分区操作

        varpivot = left,                     // 设定基准值(pivot)

            index = pivot + 1;

        for(vari = index; i <= right; i++) {

            if(arr[i] < arr[pivot]) {

                swap(arr, i, index);

                index++;

            }       

        }

        swap(arr, pivot, index - 1);

        returnindex-1;

    }

    function swap(arr, i, j) {

        vartemp = arr[i];

        arr[i] = arr[j];

        arr[j] = temp;

    }

    相关文章

      网友评论

          本文标题:排序

          本文链接:https://www.haomeiwen.com/subject/ygdnlltx.html