6.数组使用:反转、工具类、冒泡排序

 1 package com.atguigu.exec;
 2 /*
 3  * 在mian()方法中声明array1和array2两个变量,他们是int型数组
 4  * 初始化array1为 2,3,5,7,11,13,17,19
 5  * 显示array1的内容
 6  * 赋值array2变量等于array1,修改array2中偶索引元素,使其等于索引值并打印出array1
 7  * array1和array2的关系
 8  * 修改题目 实现对array2对array1的复制
 9  */
10 public class ArrayDome3 {
11  public static void main(String[] args) {
12   int[] array1,array2;
13   
14   array1 = new int[] {2,3,5,7,11,13,17,19};
15   for(int i = 0;i <array1.length;i++) {
16    System.out.println(array1[i]+"\t");
17   }
18   //赋值array2变量等于array1 将地址值赋值  而非数组的复制
19   array2 = array1;
20   /*
21    * 复制方法
22    * array2 = new int[array.length];//新的数组则必须重新new
23    * for(int i = 0; i < array.length;i++){
24    *   array2[i] = array1[i];
25    * }
26    * 
27    */
28   for( int i = 0;i < array2.length;i++) {
29    if(i % 2 == 0) {
30     array2[i] = i;
31    }
32   }
33   
34   for(int i = 0;i <array1.length;i++) {
35    System.out.println(array1[i]+"\t");
36   }
37   
38  }
39 }
  反转
 1 package com.atguigu.exec;
 2 public class ArrayDemo4 {
 3  public static void main(String[] args) {
 4   String [] arr = new String[] {"aa","bb","cc","dd","jj"};
 5   
 6   //方法一
 7   for(int i = 0;i < arr.length/2;i++) {
 8    String temp = arr[i];
 9    arr[i] = arr[arr.length-i-1];
10    arr[arr.length-i-1] = temp;
11   }
12   
13   //方法二
14   for(int i = 0,j = arr.length-1;i < j;i++,j--) {
15    String temp = arr[i];
16    arr[i] = arr[j];
17    arr[j] = temp;
18
查找
1.线性查找
 1 boolean isFlag = true;
 2   String dest = "bb";
 3   for(int i = 0;i < arr.length;i++) {
 4    //判断字符是否相等:equals
 5    if(dest.equals(arr[i])) {
 6     System.out.println("找到,位置为:"+i);
 7     isFlag = false;
 8     break;
 9    }
10   }
11   
12   if(isFlag) {
13    System.out.println("未找到");
14   }
  2.二分法查找
  //前提:所查找的数组必须有序
 1 int[] arr1 = new int[] {1,4,6,8,43,48,99,100};
 2   int dest1 = 48;
 3   int head = 0;
 4   int end = arr1.length-1;
 5   boolean isFlag1 = true;
 6   
 7   while(head <= end) {
 8    int middle = (end + head)/2;
 9    if(dest1 == arr1[middle]) {
10     System.out.println("找到,位置为"+middle);
11     isFlag1 = false;
12     break;
13    }else if(middle < dest1) {
14     head = middle + 1;
15    }
16    else {
17     end = middle -1;
18    }
19   }
20   if(isFlag1) {
21    System.out.println("未找到");
22   }  
23  }
24 }

/*
 * java.util.Arrays:操作数组的工具类,里面定义了很多操作数组的方法
 */

 1 package com.atguigu.java;
 2 import java.util.Arrays;
 3 public class ArrayTest1 {
 4  public static void main(String[] args) {
 5   
 6   //1.boolean equals(int[] a, int[] b) 判断两个数组是否相等
 7   int[] arr1 = new int[] {1,2,3,4};
 8   int[] arr2 = new int[] {1,3,2,4};
 9   boolean isEquals = Arrays.equals(arr1, arr2);
10   System.out.println(isEquals);
11   
12   //2.String toString(int[] a):输出数组信息
13   System.out.println(Arrays.toString(arr2));
14   
15   //3.void fill(int[] a,int val):将指定值填充到数组中
16   Arrays.fill(arr1,10);
17   System.out.println(Arrays.toString(arr1));
18   
19   //4.void sort(int[] a):对数组进行排序
20   Arrays.sort(arr2);
21   System.out.println(Arrays.toString(arr2));
22   
23   //5.int binarySearch(int[] a, int key)//二分查找
24   int[] arr3 = new int[] {-98,-34,2,34,54,66,79,105,210,333};
25   int index = Arrays.binarySearch(arr3, 79);
26   if(index >= 0) {
27    System.out.println(index);
28   }else {
29    System.out.println("未找到");
30   }
31  }
32 }

/*
 *数值型数组中元素、最大值、最小值、平均值、总和
 */

 1 package com.atguigu.exec;
 2 public class ArrayDemo2 {
 3  public static void main(String[] args) {
 4   int[] arr = new int[10];
 5   
 6   for(int i = 0;i < arr.length;i++) {
 7    arr[i] = (int)(Math.random()*(99-10+1)+10);
 8   }
 9   
10   int maxValue = arr[0];
11   for(int i = 1;i < arr.length;i++) {
12    if(arr[i]>maxValue) {
13     maxValue = arr[i];
14    }
15   }
16   
17   int minValue = arr[0];
18   for(int i = 1;i < arr.length;i++) {
19    if(arr[i] < minValue) {
20     minValue = arr[i];
21    }
22   }
23   
24   int sum = 0;
25   for(int i = 0;i < arr.length;i++) {
26    sum += arr[i];
27   }
28   
29   int avgValue = sum / arr.length;   
30  }
31  
32 }

排序

/*
 * 数组的冒泡排序
 */

 1 package com.atguigu.java;
 2 public class BubbleSort {
 3  public static void main(String[] args) {
 4    
 5   int[] arr = new int[] {43,32,76,-98,0,64,33,11};
 6   for(int i = 0; i < arr.length - 1;i++) {
 7    for(int j = 0; j < arr.length -1-i;j++) {
 8     if(arr[j] > arr[j+1]) {
 9      int temp = arr[j];
10      arr[j] = arr[j+1];
11      arr[j+1] = temp;
12     }   
13    }   
14   }
15   for(int i = 0;i < arr.length;i++) {
16    System.out.println(arr[i]);
17   }
18   
19  }
20 }
posted @ 2020-03-04 15:46  孫sun  阅读(364)  评论(0编辑  收藏  举报