数组
1.定义:一系列相似的元素,按照先后顺序排列在一起的集合。
2.数组的特点:
(1)数组的元素都相似;
(2)数组在创建的时候,就给出大小;
(3)数组中的每个元素,占固定的大小,同时有固定的位置。
3.数组的声明过程有两种
第一种:和C语言比较像
类型 标识符[ ];
第二种:Java特点的数组声明
类型[] 标识符;
4.数组的初始化
①静态初始化:
数据类型 数组名[]={值1,值2,值3,...,值n};
②动态初始化:
数据类型 数组名[]=new 类型[大小];
分次对每个元素进行赋值
第一种数组声明过程与数组的动态初始化
package com.yanan.test;
public class ShuZu {
public static void main(String[] args) {
int a[]=new int[9];
// 使用循环语句对数组元素进行初始化
for(int i=0;i<a.length;i++) {
a[i]=i+1;
System.out.print(a[i]+" ");
}
}
}
运行结果如下:
注意:Java中的数组元素以0开头而不是以1开头;
动态的声明过程,未对元素进行初始化,元素的值默认为0。
布尔类型的数组,每个元素占一个字节。
5.关于数组:
①求长度:数组名.length;
②定位:一某元素在数组或集合中的位置,二某位置上的元素是多少;
③替换
举例:查找某一个元素在数组中的位置,将数组逆序输出。
核心代码如下:
int[] b= {4,8,6,2,5,9,68};
//找某一个元素在数组中的位置
for(int j = 0;j<b.length;j++) {
if(b[j]==2) {
System.out.println(j);
}
}
//将数组逆序输出
for(int k=0;k<b.length/2;k++) {
int tmp=b[k]; //设置临时变量
b[k]=b[b.length-k-1];
b[b.length-k-1]=tmp;
}
//ForEach 循环:遍历数组
for(int t:b){
System.out.print(t+" ");
}
运行结果如下:
举例:将一个数组按照升序排列方式输出
①直接排序
package com.yanan.test;
public class Sort {
public static void main(String[] args) {
int[] a = { 45, 89, 42, 11, 111, 23, 453, 321, 7, 4, 21, 0, 8, 6, 4, 2, 1 }; // 对数组进行静态初始化
// 拿到用来比较的数
for (int i = 0; i < a.length; i++) {
// 拿到用来与其比较的数组
for (int j = i + 1; j < a.length; j++) {
if (a[i] > a[j]) {
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
for (int t : a) {
System.out.println(t);
}
}
}
运行结果如下:
②选择排序
package com.yanan.test;
public class XuanZeSort {
public static void main(String[] args) {
int[] a = { 45, 89, 42, 11, 111, 23, 453, 321, 7, 4, 21, 0, 8, 6, 4, 2, 1 };
for (int i = 0; i < a.length; i++) {
int minindex = i;
int min = a[i];
for (int j = i + 1; j < a.length; j++) {
if (min > a[j]) {
minindex = j;
min = a[j];
}
}
int tmp = a[i];
a[i] = a[minindex];
a[minindex] = tmp
}
for (int t : a) {
System.out.print(t + " ");
}
}
}
注意:①选择排序中每一轮最多调换一次,最少0次,比较次数是数组大小;
② 直接排序效率不如选择排序效率高。
运行结果如下:
③冒泡排序
package com.yanan.test;
public class MaoPaoSort {
public static void main(String[] args) {
int[] a = { 45, 2, 1, 90, 666, 5, 43, 6, 5, 32, 5, 67, 32, 11, 45, 56 };
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length - 1 - i; j++) {
if (a[j] > a[j + 1]) {
int tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
for (int t : a) {
System.out.println(t);
}
}
}
运行结果如下:
④使用操作Java的工具Arrays。
package com.yanan.test;
import java.util.Arrays;
public class ShengJiangSort {
public static void main(String[] args) {
int[] a = { 45, 2, 1, 90, 666, 5, 43, 6, 5, 32, 5, 67, 32, 11, 45, 56 };
Arrays.sort(a); //升序输出,Arrays专门操作java的工具
// 遍历数组
for (int t : a) {
System.out.println(t);
}
}
}
运行结果如下: