喳喳鸟的专栏

以前一直想实现归并排序,今天终于试验成功,下面是代码部分:

package com.guigu.zhangxx.main;import java.awt.*;import javax.swing.*;{/*** 1、合并算法* 2、将非减数组a和非减数组b合并成数组c*/serialVersionUID = 1L;int[] a = {1,2,2,3,4,5};int[] b = {2,3,4,5,8,8,9};int[] c = new int[a.length + b.length];void mergeList(){int i = 0;int j = 0;int k = 0;while(i<a.length && j<b.length){if(a[i]<=b[j]){c[k++] = a[i];i++;}else{c[k++] = b[j];j++;}}/*** 把La剩下的搬回去*/if(i == a.length ){while(j < b.length){c[k++] = b[j];j++;}}/*** 把Lb剩下的搬回去*/if(j == b.length ){while(i < a.length){c[k++] = a[i++];}}}void println(){for(int k=0;k < (a.length+b.length);k++){System.out.print(c[k]+” “);}}(String[] args) {Test test = new Test();test.mergeList();test.println();}}

结果: 1 2 2 2 3 3 4 4 5 5 8 8 9

说明: 归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令i和k分别加上1;否则将第二个有序表中的元素a[j]复制到r[k]中,并令j和k分别加上1,如此循环下去,直到其中一个有序表取完,然后再将另一个有序表中剩余的元素复制到r中从下标k到下标t的单元。归并排序的算法我们通常用递归实现,先把待排序区间[s,t]以中点二分,接着把左边子区间排序,再把右边子区间排序,最后把左区间和右区间用一次归并操作合并成有序的区间[s,t]。

,伟人所达到并保持着的高处,并不是一飞就到的,

喳喳鸟的专栏

相关文章:

你感兴趣的文章:

标签云: