*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.冒泡排序
*
* 算法:解决问题的流程/步骤(顺序、分支、循环)
* 数据结构:将数据按照某种特定的结构来保存
* 【数怎么存】
* 设计良好的数据结构会导致好的算法。
*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]+" ");
}
}
}