常见排序算法实现及复杂度分析

    技术2022-05-11  138

    一.           张仰彪排序法

     

     

    这个算法是从的论坛上看到的,觉得挺有意思的,以下为张仰彪排序法的实现(Java描述)

     

     

    public int[] SortProcedure(int[] oldArranewArray) {

     

        // 存放排序后的数组

     

        int[] newArray = new int[oldArranewArray.length];

     

        // 待排序数据在数组里的排名

     

        int order=0;

     

       

     

        for (int i=0; i<oldArranewArray.length; i++) {

     

           

     

            // 内循环运行一次,一个待排序数据在数组里的大小排名就确定了

     

            for (int t=0; t<oldArranewArray.length; t++) {

     

                // 待排序数组中的一个数据与其余数据相比较

     

                if(oldArranewArray[t] > oldArranewArray[i])

     

                // 每发现一个更大的数,自己的排名就向后延。

     

                order++;

     

            }

     

     

            // 有点类似线性探测

     

            while(newArray[order] != 0) // 0说明此位置已拷入过数据。

     

                order++; // 增大数据的排名,去找下一个位置。

     

     

            // 将待排序数据oldArranewArray[i]复制到结果数组newArray

     

            newArray[order] = oldArranewArray[i];      

     

           

     

    order = 0; // 排完一个数据,准备再排下一个。

     

        }

     

       

     

        return newArray;

     

    }

     

    复杂度分析:

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


    最新回复(0)