精华帖 (0) :: 良好帖 (1) :: 新手帖 (3) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-28
最后修改:2011-07-28
神之小丑 写道 flysunmicro 写道 合并,排序
按照合并 排序后我写了个。因为排序算法很多,所以就没写。归并排序应该就可以 public void mergeSort(int[] array1,int[] array2){ /* * 这里将这两个数组合并排序成一个数组 * 这里就省略 */ int[] array=new int[array1.length+array2.length]; for(int i=0;i<array1.length;i++){ array[i]=array1[i]; array[i+array1.length]=array2[i]; } System.out.println("合并数组array:"); for(int i:array) System.out.print(i+"\t"); System.out.println(); sumResolve(array,array1,array2); } private void sumResolve(int[] array,int[] array1,int[] array2){ array1[0]=array[array.length-1]; array2[0]=array[array.length-2]; int array1Sum=array1[0]; int array2Sum=array2[0]; int index1=1; int index2=1; for(int i=array.length-3;i>=0;i--){ if(array1Sum>=array2Sum&&index2<array2.length){ array2[index2]=array[i]; array2Sum+=array2[index2]; index2++; }else if(index1<array1.length){ array1[index1]=array[i]; array1Sum+=array1[index1]; index1++; } } System.out.println("数组array1:"); for(int j:array1) System.out.print(j+"\t"); System.out.print("和为:"+array1Sum); System.out.println(); System.out.println("数组array2:"); for(int j:array2) System.out.print(j+"\t"); System.out.print("和为:"+array2Sum); System.out.println(); } int[] arr1 = { 1, 2, 3, 4, 5, 11,12 }; int[] arr2 = { 13, 14, 15,100,100,101, 170 }; mergeSort(arr1, arr2); outoutPut: 合并数组array: 1 2 3 4 5 11 12 13 14 15 100 100 101 170 数组array1: 170 100 5 4 3 2 1 和为:285 数组array2: 101 100 15 14 13 12 11 和为:266 感觉这也没什么问题,只要改进算法,考虑两个数组不一样长就可以了。 |
|
返回顶楼 | |