A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

给定一个数组,对其进行反转。  如下:

{1,2,3,4,5,6}
-->
{6,5,4,3,2,1};

刚开始的想法是新建一个数组,从旧数组的最后一个值遍历到最前一个值赋值给新数组。
后来大拍脑袋,其实不就是以中间为轴,轴对称的两个数交换吗~~~~


  1. class  ArrayTest {   
  2.         public static void printArray(int[] arr)  {
  3.                 System.out.print("[");   
  4.                 for(int x=0; x<arr.length; x++)   
  5.                 {     
  6.                         if(x!=arr.length-1)      
  7.                         System.out.print(arr[x]+", ");   
  8.                         else      
  9.                         System.out.println(arr[x]+"]");   
  10.                 }  
  11.         }   
  12.        
  13.         public static void main(String[] args)   
  14.         {   
  15.                 int[] arr = {4,1,8,7,3,8,2};   
  16.                 printArray(arr);   
  17.                 reverseArray(arr);   
  18.                 printArray(arr);  
  19.         }   
  20.        
  21.         public static void reverseArray(int[] arr)  {
  22.                 for(int start=0,end=arr.length-1; start<end; start++,end--)   
  23.                 {     
  24.                         swap(arr,start,end);   
  25.                 }  
  26.         }  
  27.        
  28.         public static void swap(int[] arr,int a,int b)  {
  29.                 int temp = arr[a];  
  30.                 arr[a] = arr[b];   
  31.                 arr[b] = temp;  
  32.         }
  33. }
复制代码






9 个回复

正序浏览
这么多知识点 都记混了
回复 使用道具 举报
我也搞了个,感觉还麻烦多了,主要是int是基本数据类型,操作起来要转来转去。
思路就是转成list,再用collection的reverse,再toArray.
  1. import java.util.*;


  2. public class Test3 {
  3.         /*
  4.          * int[]转换成Integer[]
  5.          */
  6.         static Integer[] toInteger(int [] a){
  7.                 Integer [] itg=new Integer[a.length];
  8.                 for(int i=0;i<a.length;i++){
  9.                         itg[i]=new Integer(a[i]);
  10.                 }
  11.                 return itg;
  12.         }
  13.         public static void main(String[] args) {
  14.                 int []a={1,45,5,6,7,82,};
  15.                
  16.                 List<Integer> lt =Arrays.asList(toInteger(a));//只有Interge[]才能用,详情见张孝祥老师反射视频里的说明原因
  17.                 System.out.println(lt.size());
  18.                 Collections.reverse(lt);
  19. //                System.out.println(lt);
  20.                 Integer[]c=(Integer[]) lt.toArray();
  21.                 for (Integer integer : c) {
  22.                         System.out.println(integer);
  23.                 }
  24.         }
  25. }
复制代码



回复 使用道具 举报
Glc90 中级黑马 2015-8-18 09:13:18
8#
刘意的视频讲的
回复 使用道具 举报
要这么复杂嘛~~
回复 使用道具 举报
选择排序,冒泡排序都挺好的啊,,嫌麻烦希尔排序也许吧。。
回复 使用道具 举报
Hi_about... 发表于 2015-8-18 00:30
觉得还是 StringBuffer 中的  reverse()方法好 直接调用反转

数组不是StringBuffer呀......
回复 使用道具 举报
觉得还是 StringBuffer 中的  reverse()方法好 直接调用反转 {:2_44:}
回复 使用道具 举报
ooyeah 发表于 2015-8-18 00:18
路过,友情顶贴........

谢谢,嘻嘻~~~~
回复 使用道具 举报
路过,友情顶贴........
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马