数组的排序
1.将一个给定的整形数组转置输出
例如:源数组,1,2,3,4,5,6
转置之后的数组:6,5,4,3,2,1
解决思路:
简单的使用排序方法解决,例如冒泡排序
public static void main(String[] args) { //冒泡排序 int[] a={1,2,3,4,5,6}; int c=0; for (int i=1;i<a.length;i++){ for(int j=0;j<a.length-i;j++){ if(a[j]<a[j+1]){ c=a[j]; a[j]=a[j+1]; a[j+1]=c; } } } for(int i=0;i<a.length;i++) { System.out.println(a[i]); } } }
但是要记得Java是面向对象的,应该使用封装好的类去解决这个问题
第二个解题思路:
查找与数组有关的类,在API中查到了Arrys类中有个方法叫做sort()它能进行对数组的升序排列,有了升序排列,显然是不行的,看了看没有降序的方法,那么该怎么进行解决呢?
在API中再次查找发现在collections类下有个方法叫做reverse()方法,它能将list集合中的数据进行反转,可以进行使用,先进行对数组的升序排列,再把数组转变为list集合,再使用反转方法,(暂未解决后续更新解决)
2.int[] olderArr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}
要求将以上数组中的值为0的项去掉,将不为0的值存入下一个新的数组,生成性的数组为:
{1,3,4,5,6,6,5,4,7,6,7,5}
解题思路:
使用循环的中的continue进行跳出存入新的数组
public class Test02 { public static void main(String[] args) { /** * int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ; * 要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为: * int[] newArr = {1,3,4,5,6,6,5,4,7,6,7,5} ; */ int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}; int j=0; int[] newArr=new int[oldArr.length]; for (int i=0;i<oldArr.length;i++){ if(oldArr[i]==0){ //当oldArr中的值为0是,跳出本次循环 continue; } //不为0的值赋给数组newArr newArr[j]=oldArr[i]; j++;//进行下一个新的数组的赋值 } for (int k=0;k<j;k++){ //特别注意循环中K<j,你新数组存储的值的个数是等于j的,使用newArr.length,没有赋到值会使用0进行填充数组 System.out.print(newArr[k]+","); } } }
遇到的问题:
数组遍历时,数组中未进行赋值的,系统进行了对其填充
3.给出两个数组,数组a:“1,7,9,11,13,15,17,19”,数组b“2,4,6,8,10”对其进行数组合并成为新数组
解题思路:
在API中查找是否有对数组进行拷贝复制的,刚开始在Arrys类中查找到copyof方法,发现对其作用不行
在进行查找,既然有copyof,那就试试有没有Arrycopy数组拷贝方法,我在System中查到了这个方法(ps:英语很重要
public class Test03 { public static void main(String[] args) { /** * 数组a:"1,7,9,11,13,15,17,19" * 数组b:"2,4,6,8,10" * 两个数组合并为数组c。 */ int[] a={1,7,9,11,13,15,17,19}; int[] b={2,4,6,8,10}; int[] c=new int[a.length+b.length]; //复制从a的第一个开始复制,第一个数在数组中的下标为0,写入c,也是从第一个开始,复制长度为a数组的长度 System.arraycopy(a,0,c,0,a.length); //复制从b的第一个开始,但在写入c的时候,应当从c数组的最后一个位置写入,它最后一个位置的下边就是数组的长度,复制长度为b数组长度 System.arraycopy(b,0,c,a.length,b.length); for(int i=0;i<c.length;i++){ System.out.print(c[i]+","); } } }
总结:
操作数组的类一般在API中可以进行查找,此次用到了Arry,Arrylist,Arrys,还有在使用API手册时,最最重要的就是英语的重要性,类名,方法名都是见名知意的。