码迷,mamicode.com
首页 > 编程语言 > 详细

03数组

时间:2020-06-13 09:14:08      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:归并排序   个数   执行   声明   result   假设   shell排序   类型   null   

动态数组:
int[] arr = new int[5]; ->声明了一个能放5个int类型的数组
   arr[0] = 1;
   arr[1] = 2;
   arr[0] = 41;
   arr[1] = 8;
   arr[0] = 11;

动态数组:++在初始化的时候元素空间分配 和 赋值,分别执行++


静态数组:
int[] arr = new int[]{7,5,18,3};  ->可以这么写
int[] arr = {6,5,18,3};            ->也可以这么写

静态数组:++在创建的时候元素的空间分配和赋值同时执行++


数组的索引

就是数组的下标,从0开始

比如: arr[0] 就是数组里的第一个数 依次往后

int arr = new int[]{6,5,18,3};
System.out.println(arr[0]); ->这里输出的会是6

数组的长度length
int[] strs = new String[]{"g","s","y","z"};
System.out.println(strs.length);
输出:4      strs这个数组的长度是4

数组的初始化默认值

在动态初始化中才有

int[] arr = [2];
System.out.println(arr[0]);
输出:0

数字类型的默认值是0,++对象的默认值是null++


多维数组

数组中的元素就是数组:

int[][] arr = new int[][]{
    {1,2,3},
    {11,12,13}
}

定义多维数组的长度:

int[][] arr = new int[3][4];
等同于↓
int[][] arr = new int[][]{
    {1,2,3,4},   第0个元素
    {11,22,33,44},      第1个元素
    {111,222,333,444}       第2个元素
      0   1   2   3
      //333的位置就 arr[2][2]
}

int[][] arr = new int[3][];//只定义了一维数组
取值

取上边数组的 333

System.out.println(arr[2][2]);
练习
求所有元素的和
int[][] arr = new int[][]{
			{3,8,2},
			{2,7},
			{9,0,1,6}
		};
-----------------------------------------------------
1.先定义一个结果
int result = 0;
2.遍历一维数组
for(int i = 0; i < arr.length; i++){
    for(int b = 0; b < arr[i].length; b++){
        result += arr[i][b];
    }
}

数组中的常见算法
  • 求数组中的最大值,最小值,总和,平均数.
  • 数组的复制,反转
  • 数组元素排序
求数组中的最大值,最小值,总和,平均数.
int[] arr = new int[] {4,2,7,1,3,5};
		//最大值
		int max = arr[0];//假设arr[0]是最大值
		for(int i = 0; i < arr.length; i++) {
			if(max < arr[i]) {
				max = arr[i];//存放目前最大值
			}
		}
		System.out.println("最大值是:"+ max);
		
		//最小值
		int min = 0;
		for(int i = 0; i < arr.length; i++) {
			if(min > arr[i]) {
				min = arr[i];
			}
		}		
		System.out.println("最小值是:"+ min);
		
		//总和,平均数
		int result = 0;
		for(int i = 0; i < arr.length; i++) {
			result += arr[i];
		}
		System.out.println("总和是:"+result);
		System.out.println("平均数是:"+(result/arr.length));
数组的复制,反转
//数组的复制
int[] arr = new int[] {4,2,7,1,3,5};
		int[] copy = new int[arr.length];//先声明一个与arr长度一致的数组
		for(int i = 0; i < arr.length; i++) {
			copy[i] = arr[i];//遍历arr ,把arr的每一个元素按照顺-
		                     //序拿出来给copy的每一个元素赋值
							 //在这里  i 就是 copy和arr的元素下标
		}
---------------------------
//数组的反转
		int[] arr = new int[] {4,2,7,1,3,5};
		//考虑在声明一个数组,temp 数组temp的长度与arr的长度一致
		//倒着循环arr 正着给temp赋值
		int h = 0;
		int[] temp = new int[arr.length];
		for(int i = arr.length-1; i >= 0; i--) {
			//arr[i] = 5 4 3 2 1 0 
			//temp [h++] = arr[i];
			temp [h] = arr[i];
		           	h++;
		}
	        	arr = temp;
		//System.out.println(Arrays.toString(temp));
	      System.out.println(Arrays.toString(arr));
数组元素排序
  • 插入排序 (直接插入排序,折半插入排序,Shell排序)
  • 交换排序 (冒泡排序,快速排序 (或分区交换排序))
  • 选择排序 (简单选择排序,堆排序)
  • 归并排序
  • 基数排序
//冒泡排序
		int[] arr = new int[] {4,7,3,1,0,9,2};
		int temp = 0;
		for(int a = 0; a < arr.length-1; a++) {
			for(int b = 0; b < arr.length-1-a;b++) {
				if(arr[b] > arr[b+1]) {
					temp = arr[b+1];
					arr[b+1] = arr[b];
					arr[b] = temp;
				}
			}
		}
		System.out.println(Arrays.toString(arr));

03数组

标签:归并排序   个数   执行   声明   result   假设   shell排序   类型   null   

原文地址:https://www.cnblogs.com/wld66/p/13111305.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!