数组

*1.程序=算法+数据结构
 *      算法:解决问题的流程/步骤(顺序、分支、循环)
 *      数据结构:将数据按照某种特定的结构来保存
 *               【数怎么存】
 *      设计良好的数据结构会导致好的算法。
 *1.数组:
 *   2. 1)相同数据类型元素的集合
 *    2.2)数组是一种数据类型(引用类型)
 *    2.3)数组的定义:
 *        int[] arr = new int[4];
 *    2.4)数组的初始化:
 *        int[] arr = new int[3];
 *        int[] arr = {1,4,7};
 *        int[] arr = new int[]{1,4,7};
 *        
 *        int[] arr;
 *        arr = {1,4,7};//编译错误,此方式只能声明的同时初始化
 *        arr = new int[]{1,4,7};//正确
 *    2.5)数组的访问:
 *      2.5.1)通过数组名.length可以获取数组的长度
 *            int[] arr = new int[3];
 *            System.out.println(arr.length);
 *      2. 5.2)通过索引/下标来访问数组中的元素
 *           下标从0开始,最大到arr.length-1
 *            int[] arr = new int[3];
 *            arr[0]=100;//给第一个元素赋值为100
 *            arr[1]=100;
 *            arr[2]=100;
 *            arr[3]=100;//数组下标越界异常
 * 2.6)数组的遍历:
 *    int[] arr = new int[10];
 *    for(int i=0;i<arr.length;i++){
 *     arr[i]=100;
 *    }
 *    for(int i=0;i<arr.length;i++){//正序
 *     System.out.println(arr[i]);
 *    }
 *    for(int i=arr.length-1;i>=0;i--){倒序
 *     System.out.println(arr[i]);
 *    }
 * 2.7)注意:注意:
 *    定义基本类型数组的要点:
 *    --确切的数据类型
 *    --整体的数组名字
 *    --不能缺少的"[]"
 *    *执行New语句才使得数组分配到了指定大小的空间
 *    *int[] arr 与 int arr[]两种写法均可
 *    *声明数组时不规定数组长度,new关键字分配空间
 *      时需指定分配的空间大小
 *    *
 *2.8)注意:注意:
 *    初始化数组:
 *      基本类型的数组创建后,其元素的初始值:byte、short
 *      char(0)、int、long为0;float和double为0.0;boolean
 *      为false
 *    编程要点::::
 *      @可以在数组声明的同时对数组的元素进行初始化,例如:
 *         int[] arr = {10,10,10520};
 *      @此种写法只能用于声明时的初始化,不能用于赋值。如:
 *         int[] arr;
 *         arr = {10,2,3,0,1};
 *           上面代码会有编译错误。 
 *      ###但是这种就可以:
 *        int[] arr;
 *        arr = new int[]{10,4,5,1};
 *           注意:[]中不可以写长度,元素的个数就是数组的长度
 * 2.9)数组的复制:
 *   int[] a = {10,20,30,40,50};
 *   int[] a1 = new int[6];
 *    ¥1:System.arraycopy(源数组,源数组的起始下标,
 *        目标数组,目标数组的起始下标,要复制元素的个数)     
 *    System.arraycopy(a,1,a1,0,4);
 *    ¥2:int[] a1 = Arrays.copyOf(a,6);//数组的扩容
 * 
 * ********************************************       
 * 数组的长度是固定的                                                     *
 * Arrays可以实现数组的扩容:                                     *
 * int[] a = new int[5];                      *
 * 创建一个新的数组,将原数组的内容复制进去            *
 * a(新建的数组) = Arrays.copyOf(a(源数组),6);*
 * a=Arrays.copyOf(a,a.length-1);                                          *
 * ********************************************      
 *    
 *     
 *2.10)Arrays.sort()对数组进行升序排列
 *2.11)冒泡排序:
 *   int[] arr = {45,23,1,18};
 *   第一轮:
 *      45和23比,换,23,45,1,18
 *      45和1比,换,23,1,45,18
 *      45和18比,换,23,1,18,45----45冒出来了
 *    第二轮:
 *      23和1比,换,1,23,18,45
 *      23和18比,换,1,18,23,45----23冒出来了
 *    第三轮:
 *      1和18,比,1,18,23,45-------18冒出来了
 *         
 *    冒泡的工作原理:
 *      11.1)4个数冒三轮
 *      11.2)每一轮都是从第1个元素开始冒
 *            每一次都是和它的下一个元素比
 *      11.2)冒出来了的数就不带他玩了
 *           每次的的次数递减
 * 
 * 
 * 任务  1.九九乘法表
 *      2.找最大值并放在最后一位
 *      3.冒泡排序
 *      

 * */  

//九九乘法表
public class MultiTable {
	public static void main(String []args){
		for(int num=1;num<=9;num++){//控制行
			for(int i=1;i<=num;i++){//控制列
				System.out.print(i+"*"+num+"="+i*num+"\t");
			}
			System.out.println();
		}
		
		
	}
}

 冒泡排序:

 

//冒泡排序
/*i=0 3  arr.length-1-i
 *i=1 2
 *i=3 1
 * */
public class Sort {
	public static void main(String[] args) {
	int[] arr = {1,41,23,8};
	for(int i=0;i<arr.length-1;i++){//控制轮数
	   for(int j=0;j<arr.length-1-i;j++){
		   if(arr[j]<arr[j+1]){
			   int t = arr[j];
			   arr[j]=arr[j+1];
			   arr[j+1]=t;
		   }
	   }	
	}
	for(int i=0;i<arr.length;i++){
		System.out.print(arr[i]+" ");
	}
	}

}

 找最大值:

  /* 案例:
 *   找出数组元素中的最大值并将找出的最大值
 *   放在数组最后一个元素的下一个位置!!
 */

import java.util.Arrays;
public class ArrayDemo {
	public static void main(String[] args) {
		long a = System.currentTimeMillis();
		System.out.println(a);
		/*int[] a = new int[10];
		for(int i=0;i<a.length;i++){
			a[i] = (int )(Math.random()*100);
			System.out.print(a[i]+" ");
		}
		System.out.println();
		int max = a[0];
		for(int i=1;i<a.length;i++){
			if(a[i]>max){
				max = a[i];
			}
		}
		System.out.println("Max:"+max);
		a = Arrays.copyOf(a,a.length+1);
		a[a.length-1] = max;
		for(int i=0;i<a.length;i++){
			System.out.print(a[i]+" ");System.out.prinltn("");
		}
		System.out.println();*/
		int [] arr = {10,4,5,5,7,1,9,3,1,0,10};
		long a1 = System.currentTimeMillis();
		Arrays.sort(arr);
		long a11 = System.currentTimeMillis();
		System.out.println(a11-a1);
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
	   
		}
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值