遍历-两个java数组比大小排序

问题描述

两个java数组比大小排序

举个例子,我现在有两个集合数组 A ={32,43,28,3,67,20, 40,0, 59 } B = {3 ,45, 18 ,83 ,30 ,28 ,40,56 ,25} 我要对两个集合数组的大小进行一 一的比较,最后整合到一个大集合数组C中,数字大的排的前面,数字小的在后面,如果AB有数字相同的,那将A组里面的数字排到B前面。求大神帮忙怎么用循环遍历来写这一段代码。

解决方案

上面写成了从小到大排序了,不好意思

 public static int[] mergeSort(int[] A,int[] B){
        int[] tmp = new int[A.length + B.length];
        //将A,B分别排序
        Arrays.sort(A);
        Arrays.sort(B);
        //合并到一个数组里面
        int index = 0;//tmp的游标
        int i = A.length - 1;//A的游标
        int j = B.length - 1;//B的游标
        while(i >= 0 && j >= 0){
            if(A[i] >= B[j]){
                tmp[index++] = A[i--];
            }else{
                tmp[index++] = B[j--];
            }
        }
        while(i >= 0){
            tmp[index++] = A[i--];
        }
        while(j >= 0){
            tmp[index++] = B[j--];
        }
        return tmp;
    }

解决方案二:

你的数组等长,那么遍历取同样位置的数据比较大小,放入合并后的数组,该数组长度是两个数组长度之和

解决方案三:

直接把两个数组连接起来用任何一种稳定的排序算法排序。(假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法)

解决方案四:

在所有稳定的排序算法中,最简单的是冒泡排序。
http://blog.csdn.net/yyywyr/article/details/8075433
http://blog.163.com/yurong_1987@126/blog/static/475178632008615054342/

解决方案五:

合并两个数组,然后用冒泡排序就可以了

解决方案六:

使用归并的思想。将两个数组排序,然后再 合并到一起。

 public static int[] mergeSort(int[] A,int[] B){
        int[] tmp = new int[A.length + B.length];
        //将A,B分别排序
        Arrays.sort(A);
        Arrays.sort(B);
        //合并到一个数组里面
        int index = 0;//tmp的游标
        int i = 0;//A的游标
        int j = 0;//B的游标
        while(i < A.length && j < B.length){
            if(A[i] <= B[j]){
                tmp[index++] = A[i++];
            }else{
                tmp[index++] = B[j++];
            }
        }
        //如果A中还有剩余元素,直接复制到tmp中
        while(i < A.length){
            tmp[index++] = A[i++];
        }
        //如果B中还有剩余元素,直接复制到tmp中
        while(j < B.length){
            tmp[index++] = B[j++];
        }
        return tmp;
    }

解决方案七:

如果AB有数字相同的,那将A组里面的数字排到B前面
这个要求真是奇葩,数字都相同的,你怎么区分他是哪个数组的?整合到一个数组中,又不存在其他能够区分的标志位

解决方案八:

话说我也挺感兴趣这个相同数字的处理的,如何区分嗯。

解决方案九:

一定要先比大小再整合到一起吗?能不能先整合到一个数组里,然后再用Array.sort()。整合到一起:创建一个新数组,前x个等于A组,后x个等于B组。

解决方案十:

JAVA数组排序
Java数组排序sort()

时间: 2024-08-03 01:26:23

遍历-两个java数组比大小排序的相关文章

java字符串数组进行大小排序的简单实现_java

若是将两个字符串直接比较大小,会包:The operator > is undefined for the argument type(s) java.lang.String, java.lang.String的错误. 字符串比较大小可以用字符串长度或者是比较字符串内字符的ASCII码值,前者太简单,就不进行讲述记录. 字符串用ASCII码比较大小,规则是: 1.比较首字母的ASCII码大小 2.若是前面的字母相同,则比较之后的字母的ASCII码值 3.若是一个字符串从首字母开始包含另一个字符串

JAVA数组之选择排序算法

注意选择排序和冒泡排序的异同点: 它们两者比较的次数一样,O[N^2]的时间. 但选择排序的交换次数要比冒泡少.我想是因为它在每次循环之前,就设计了一个锚点.(如下面的MIN),这样就避免了已排序好的元素再交换.其适用于排序量少而交换多. public void insert(long value) { int j; int i; long temp; long min; a[nElems] = value; nElems++; for(j = 0; j < nElems; j++){ min

java数组降序和升序排序例子

java.util.Arrays 类中提供了几个静态方法用来对数组进行排序.例如:使用Arrays.sort(),然后将数组作为参数传入,然后返回排序完的数组.java中,我们也可以使用升序或降序,或者是自定义comparator来进行排序. 对java数组进行升序排序 对数组(String,int等类型)进行升序排序,我们可以直接使用Arrays.sort()方法,该方法会默认根据CompareTo方法实现的自然顺序(natral order)进行升序排序.所谓自然顺序,如对于String类型

javascript的数组和数字排序

javascript数组分配内存是非线性的,这样会牺牲性能,好处就是更加灵活,例如:数组元素不要求同样的类型,给数组添加元素不会越界. 数组下标从0开始,length取值为最大下标加1.数组下标不必连续,你也可以改变length的值,数组元素内存是动态分配的,仅仅是设置更大的length不会占用更多的空间,而将length的值改小,则大于等于该下标的元素会被清除掉,内存得以释放. 数组和对象的主要差别有两点,一是数组对象属性名称不能自定义,二是数组对象会有一些处理数组的方法,在对象中没有. 使用

java数组-Java合并两个升序数组

问题描述 Java合并两个升序数组 假如ab是两个已排好序的升序数组,将数组b合并到a中,使a成为一个升序数组(这里假设a的长度大于等于a和b的元素个数之和) 解决方案 b的元素合并到a中,很可能涉及a中元素的移位,移位对于数组来说效率较低,所以建议把a和b的元素先合并到c中,然后再把c的地址赋给a:那么a.b合并的代码如下:(假设a.b是int型的数组,如果是其他类型的数组要稍稍修改程序才能用,主要是修改数组类型定义和判断数组元素大小的地方) public int [] combine(int

java字符串按长度大小排序

问题描述 java字符串按长度大小排序 由用户自己随意输入不同的字符串,,怎样按输入的字符串长度大小来排序. 解决方案 代码如下 package Demo; public class Demo_120901 { public static void sortStringArray(String[] arrStr) { String temp; for (int i = 0; i < arrStr.length; i++) { for (int j = arrStr.length - 1; j >

java求数组元素重复次数和java字符串比较大小示例_java

复制代码 代码如下: /** * Name: 求数组中元素重复次数对多的数和重复次数 * Description:  * 数组中的元素可能会重复,这个方法可以找出重复次数最多的数,同时可以返回重复了多少次. * 但需要知道这个数组中最大的元素是多少,如果无法确定,就悲剧啦~ * * @param array目标数组: *           max数组中数据的最大值: * @return 返回一个包含重复次数最多的数(value)和重复次数(maxCount)的map集合: *         

分享非常有用的Java程序 (关键代码)(四)---动态改变数组的大小

原文:分享非常有用的Java程序 (关键代码)(四)---动态改变数组的大小  /** * Reallocates an array with a new size, and copies the contents * * of the old array to the new array. * * @param oldArray the old array, to be reallocated. * * @param newSize the new array size. * * @retur

java数组的排序 对象数组的排序 Comoarable接口实现 compareTo函数实现

 /*java 中数组的排序 对象数组 的排序基本类型的数组可以直接排序但是 引用类型的数组 不能直接排序 首先要实现 Comparable 接口并且重载compareTo方法 这个方法在  java.until包中的 Arrays 类 的  binarySearch() sort()进行排序和 查找  我们自定义的类进行排序  ,对象的搜索通过 binarySearch  但是这种搜索必须是排序号了的数组 String类 有 compareTo函数 可以直接进行比较 , */ import j