加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java数组相关算法一

发布时间:2020-12-15 05:31:52 所属栏目:Java 来源:网络整理
导读:一、数组反转 1、方法一:创建新数组 1 int [] arr = {6,29,4,3 }; 2 int [] arr2 = new int [arr.length]; 3 for ( int i = 0; i arr.length; i++ ) { 4 arr2[i]=arr[arr.length-1- i]; 5 } 6 System.out.println(Arrays.toString(arr2)); 2、方法二:交换

一、数组反转 

   1、方法一:创建新数组
1 int[] arr = {6,29,4,3};
2 int[] arr2 = new int[arr.length];
3 for (int i = 0; i < arr.length; i++) {
4     arr2[i]=arr[arr.length-1-i];
5 }
6 System.out.println(Arrays.toString(arr2));
   2、方法二:交换
1 int[] arr = {6,3};
2 int mid = arr.length/2;
3 for (int i = 0,j=arr.length-1; i < mid; i++,j--) {
4     int a = arr[i];
5     arr[i] = arr[j];
6     arr[j] = a;
7 }
8 System.out.println(Arrays.toString(arr));

?

二、查找数组中指定元素的索引位置

  1、方法一:遍历
  
 1 public class FindArraryValue {
 2     public static void main(String[] args) {
 3         int[] arr = { 6,1,3,100,80,1000,600 };
 4         System.out.println(find1(arr,6));//1
 5     }
 6 
 7     public static int findValue(int[] a,int v) {
 8         for (int i = 0; i < a.length; i++) {
 9             if (a[i] == v) {
10                 return i;
11             }
12         }
13         return -1;
14     }
15  }
  2、方法二:二分查找法(必须先排序)
 1 public class FindArraryValue {
 2     public static void main(String[] args) {
 3         int[] arr = { 6,600 };
 4         Arrays.sort(arr);
 5         System.out.println(Arrays.toString(arr));
 6         //[1,6,600,1000]
 7         System.out.println(binaryResearch(arr,arr.length,6));
 8         //[1,1000]
 9         System.out.println(Arrays.binarySearch(arr,6));
10     }
11 
12     public static int binaryResearch(int[] a,int fromIndex,int toIndex,int v) {
13         if (a == null) {
14             throw new RuntimeException("数组不能为空");
15         }
16         if (fromIndex < 0) {
17             throw new RuntimeException("开始索引不能为负数");
18         }
19         if (fromIndex > toIndex) {
20             throw new RuntimeException("开始索引不能小于结束索引");
21         }
22         if (fromIndex > a.length) {
23             throw new RuntimeException("结束索引不能大于数组的长度");
24         }
25         int low = fromIndex;
26         int high = toIndex - 1;
27         while (low <= high) {
28             //无符号右移一位,即除以2
29             int mid = (high + low) >>> 1;
30             if (a[mid] < v) {
31                 low = mid + 1;
32             } else if (a[mid] > v) {
33                 high = mid - 1;
34             } else {
35                 return mid;
36             }
37         }
       //未找到
38 return -1; 39 } 40 }

?

三、杨辉三角

  1、方法一:直接创建二维数组

 1 public class Yang {
 2     public static void main(String[] args) {
 3         int yang[][] = new int[10][10];
 4 
 5         yang[0][0]=1;
 6         yang[1][0]=1;
 7         yang[1][1]=1;
 8         for (int i = 2; i <10 ; i++) {
 9             yang[i][0]=1;
10             yang[i][i]=1;
11             for (int j = 1; j < i; j++) {
12                 yang[i][j]=yang[i-1][j-1]+yang[i-1][j];
13             }
14         }
15 
16         for (int i = 0; i <10 ; i++) {
17             for (int j = 0; j <= i; j++) {
18                 System.out.print(yang[i][j]+"  ");
19             }
20             System.out.println();
21         }
22     }
23 }    

?

  2、方法二:在二层循环中创建一位数组(推荐)

 1 public class Yang {
 2     public static void main(String[] args) {
 3         int yang[][] = new int[10][];    
 4         for (int i = 0; i < yang.length; i++) {
 5             yang[i]=new int[i+1];
 6             yang[i][0]=1;
 7             yang[i][i]=1;
 8             //for (int j = 1; j < yang[i].length-1; j++) {
 9             for (int j = 1; j < i; j++) {
10                 yang[i][j]=yang[i-1][j-1]+yang[i-1][j];
11             }
12         }
13         
14         for (int i = 0; i <10 ; i++) {
15             for (int j = 0; j <= i; j++) {
16                 System.out.print(yang[i][j]+"  ");
17             }
18             System.out.println();
19         }
20     }
21 }

?

四、九九乘法表 

 1 public class Jiujiu {
 2     public static void main(String[] args) {
 3         for (int i = 1; i < 10; i++) {
 4             for (int j = 1; j <= i; j++) {
 5                 System.out.printf("%d * %d = %d   ",j,i,i*j);
 6             }
 7             System.out.println();
 8         }
 9     }
10 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读