桶排序算法原理代码

举报
tea_year 发表于 2022/05/21 22:34:14 2022/05/21
【摘要】 package com.aaa.advsort;/** * 归并排序,实现两个有序数组的合并排序; * @author 张晨光 * */public class MergeTest {    public static void main(String[] args) {        int []a={1,8,11,19,23};        int[]b={3,4,7,12};    ...

package com.aaa.advsort;

/**

* 归并排序,实现两个有序数组的合并排序;

* @author 张晨光

*

*/

public class MergeTest {

    public static void main(String[] args) {

        int []a={1,8,11,19,23};

        int[]b={3,4,7,12};

        

        //将两个数组进行归并,得到一个新的数组

        int[]c=merge(a,b);

        //最后遍历结果c数组;

        System.out.println("归并后的数组为:");

        for(int num:c){

            System.out.print(num+" ");

        }

    }


    /**

     * @param a 待排序数组a

     * @param b 待排序数组b

     * @return a b数组归并后的数组;

     */

    private static int[] merge(int[] a, int[] b) {

        //定义归并后的数组为tempArr

        int[]tempArr=new int[a.length+b.length];

        //数组的下标;

        int ai=0; //表示数组a的下标;

        int bi=0; //表示数组b的下标;

        int ti=0; //表示数组temp结果的下标;

        

        //待排序数组 最小值的比较,最小的放到tempArr里面

        while(ai<a.length && bi<b.length){

            if(a[ai]<=b[bi])

                tempArr[ti++]=a[ai++]; //先赋值,然后下标移动到下一个位置;

            else

                tempArr[ti++]=b[bi++];

        }

        //如果某一个数组长度已经未完毕,则剩下的数据,依次放入归并结果数组tempArr

        while(ai<a.length)tempArr[ti++]=a[ai++];

        while(bi<b.length)tempArr[ti++]=b[bi++];

        

        return tempArr;

    }

}


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。