今天把没有看完的数组看完了,收获颇多,今天在这里给大家分享一下
数组声明的两种方式:- 第一种:数据类型 [] 数组名字 例如:int [] a;
- 第二种:数据类型 数组的名字 [] 例如: int a [];
- 声明数组的同时,根据指定的长度分配内存,但数组中元素值都为默认的初始化值 int[] a= new int[10];
- 声明数组并分配内存,同时将其初始化 int[] b= new int[]{1, 2, 3, 4, 5};
- 与前一种方式相同,仅仅只是语法相对简略 int[] c = {1, 2, 3, 4, 5};
注意:
- 前面定义的数组类型需要和后面的数据类型相一致;
- 后面的数据类型字节小的可以自动转化为字节大的数据类型(具体见数据类型);
- 当大括号里的元素个数给定时,中括号中不能在说明数据个数,否则会违背命名规则;
- 当数据个数给定时,数组是从a[0]开始计数的,所以当数组的个数有n个时,数组的最大访问元素为a[n-1];
在数组中,你应该具有空间想象能力,不然是很难将这部分吸收的,在数组中,利用最多的还是算法为主,现在给大家介绍2种算法,分别是冒泡算法和选择算法:
冒泡排序算法:
冒泡算法顾名思义就是利用泡泡原理,将轻的泡泡一步一步的从底下升上来,现在给大家简单的描述描述。
1. 算法步骤比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
2. 动图演示java代码实现
int [] a=new int[]{7,2,8,4,9};
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-1-i;j++) {
if (a[j] > a[j+1]) {
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(a));
选择排序算法:
原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有、树型选择排简单选择排序序和堆排序。(这里只介绍常用的简单选择排序)
b) 简单选择排序的基本思想:给定数组:int[] arr={里面n个数据};第1趟排序,在待排序数据arr[1]~arr[n]中选出最小的数据,将它与arrr[1]交换;第2趟,在待排序数据arr[2]~arr[n]中选出最小的数据,将它与r[2]交换;以此类推,第i趟在待排序数据arr[i]~arr[n]中选出最小的数据,将它与r[i]交换,直到全部排序完成。
c) 举例:数组 int[] arr={5,2,8,4,9,1};
第一趟排序: 原始数据:5 2 8 4 9 1
最小数据1,把1放在首位,也就是1和5互换位置,
排序结果:1 2 8 4 9 5
-第二趟排序:
第1以外的数据{2 8 4 9 5}进行比较,2最小,
排序结果:1 2 8 4 9 5
第三趟排序:
除1、2以外的数据{8 4 9 5}进行比较,4最小,8和4交换
排序结果:1 2 4 8 9 5
第四趟排序:
除第1、2、4以外的其他数据{8 9 5}进行比较,5最小,8和5交换
排序结果:1 2 4 5 9 8
第五趟排序:
除第1、2、4、5以外的其他数据{9 8}进行比较,8最小,8和9交换
排序结果:1 2 4 5 8 9
代码实现:
for (int i = 0; i < a.length-1; i++) {
for (int j = i+1; j < a.length;j++) {
if (a[i] > a[j]) {
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
System.out.println(Arrays.toString(a));



