回顾>>JAVA归并排序(堆排序)

本文介绍了一种高效的排序算法——归并排序。通过将两个已排序的数组合并成一个新数组实现排序过程。具体步骤包括初始化数组、比较元素大小并依次填充新数组等。

归并排序
1.首先是两个有序的数组
2.我们定义一个长度为A和B数组长度和的数组C
3.将A,B,C三个数组传入归并算法中
当A和B的数组下标都小于他们数字长度时
先取出A[1]和B[1]进行比较,将小的那个值放入C数字中
再将取出数字的数组和C数组下标++
当跳出次循环时,再看A或B数组那个下标还未到达他们的数组长度-1时
再次对该数组进行循环与赋值
当两次循环完毕后,C数字中就已经为AB数组排好序的值了

package com.huawei.sort;

import java.util.Arrays;

/**

  • @author Lpf.

  • @version 创建时间:2019年3月31日 下午1:34:49 归并排序
    */
    public class MergeSort {

    public static void main(String[] args) {

     // 首先我们获取两个有序的数组
     Integer[] arrA = { 1, 18, 21, 35, 42, 59, 64, 78, 81, 94 };
     Integer[] arrB = { 8, 12, 24, 38, 44, 59, 61, 79, 94, 98, 109 };
    
     // 新建一个长度为arrA和arrB的数组
     Integer[] sortArr = new Integer[arrA.length + arrB.length];
     mergeSort(arrA, arrB, sortArr);
     System.out.println("排序好的数组" + Arrays.toString(sortArr));
    

    }

    public static void mergeSort(Integer[] arrA, Integer[] arrB, Integer[] sortArr) {

     // arrA的下标
     int a = 0;
     // arrB的下标
     int b = 0;
     // sortArr的下标
     int s = 0;
    
     while (a < arrA.length && b < arrB.length) {
     	if (arrA[a] <= arrB[b]) {
     		sortArr[s] = arrA[a];
     		a++;
     		s++;
     	} else {
     		sortArr[s] = arrB[b];
     		b++;
     		s++;
     	}
     }
     while (a < arrA.length) {
     	sortArr[s] = arrA[a];
     	a++;
     	s++;
     }
     while (b < arrB.length) {
     	sortArr[s] = arrB[b];
     	b++;
     	s++;
     }
    

    }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值