数组:相同类型数据的集合,是一个容器。使用数组的好处就是方便操作里面的元素。
一维数组的创建和使用
格式1:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
例: 不确定具体数据时:
int[] arr = new int [7];
格式2:
已知存储的具体数据
元素类型[] 数组名 = new 元素类型[] {元素,元素,.... ...}
例:
int[] arr = new int[]{1,3,5,7};
或者是
int[] arr = {1,3,5,7};
示例:使用一维数组将1到12月份各个月份的天数输出
class GetDay //创建类
{
public static void main(String[] args) //主方法
{
//创建并初始化一维数组
int[] day = new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
for(int 1=0;i<12;i++) //利用循环将信息输出
{
System.out.println((i+1)+"月有"+day[i]+"天");//输出的信息
}
}
}
数组内存图:
注意:数组的长度在创建的时候就确定了,不可改变。并且数组的下标都是从0开始的!
二维数组的创建和使用
如果一维数组中的各个元素还是一个数组,那么它就是一个二维数组。二维数组中,第一个下标代表元素所在的行,第二个下标代表元素所在的列。
二维数组的初始化与一维数组初始化类似,同样可以使用大括号完成。
数据数据类型 数组名称[] = new {数组中各元素的值};
例:
int arr[][] = {{1,2}{2,3}};
示例:用代码实现输出一个3行4列,并且所有元素都是0的矩阵
class Matrix //创建类
{
public static void main(String[] args) //主方法
{
//定义二维数组
int a[][] = new int [3][4];
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++) //循环遍历数组中的每个元素
{
System.out.print(a[i][j]); //将数组中的元素输出
}
System.out.println(); //输出空格
}
}
}
1.遍历数组:
一维数组一个for循环,二维数组在第一个for里面再嵌套一个for即可。
注意:因为数组的长度在初始化的时候就是确定也是固定的,所以数组有一个特殊的属性。就是 length
通过length可以直接获取数组的长度。
2.数组的排序:
下面列举了常见2种排序方式。
选择排序:
思路:
1、首先拿数组第一个元素依次与除其自身外的其他每个元素顺序比较,如果第一个元素大于剩下的某个元素,就互换内容。
2、经过第一轮比较之后,此时,第一个元素就是数组中最小的元素。然后再拿第二个元素与除第一个元素和其自身的元素进行比较,如果第二个元素大于剩下的某个元素,就互换内容。此时,第二个元素就是数组中倒数第二小的元素。
3、依次类推,直到最后一个元素。
1、首先拿数组第一个元素依次与除其自身外的其他每个元素顺序比较,如果第一个元素大于剩下的某个元素,就互换内容。
2、经过第一轮比较之后,此时,第一个元素就是数组中最小的元素。然后再拿第二个元素与除第一个元素和其自身的元素进行比较,如果第二个元素大于剩下的某个元素,就互换内容。此时,第二个元素就是数组中倒数第二小的元素。
3、依次类推,直到最后一个元素。
class ArrayDemo{
public static void main(String[] args) {
int[] arr= {89,34,-270,17,3,100};
System.out.print("排序前数组:" );
printArray(arr);
selectSort(arr);
System.out.print("排序后数组:" );
printArray(arr);
}
public static void selectSort(int[] arr){
for(int x = 0; x < arr.length - 1; x++){
for(int y = x + 1; y < arr.length; y++){
if(arr[x] > arr[y]){
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
public static void printArray(int[] arr){
System.out.print("[" );
for(int x = 0; x < arr.length; x++){
if(x != arr.length - 1)
System.out.print(arr[x] + "," );
else
System.out.println(arr[x] + "]" );
}
}
}
冒泡排序:
思路:
1、首先在第一轮排序中,数组从第一个元素到倒数第二个元素依次与其右边的元素进行比较,如果左边的元素大于右边的元素,那么两个元素就互换。
2、经过第一轮比较,最大的元素就已经存储到数组最右边的结点中了。
3、第二轮排序则是从第一个元素到倒数第三个元素依次与其右边的元素进行比较,如果左边的元素大于右边的元素,那么两个元素就互换。
4、依照此方式,一直到只有第一和第二个元素互相比较而结束。
1、首先在第一轮排序中,数组从第一个元素到倒数第二个元素依次与其右边的元素进行比较,如果左边的元素大于右边的元素,那么两个元素就互换。
2、经过第一轮比较,最大的元素就已经存储到数组最右边的结点中了。
3、第二轮排序则是从第一个元素到倒数第三个元素依次与其右边的元素进行比较,如果左边的元素大于右边的元素,那么两个元素就互换。
4、依照此方式,一直到只有第一和第二个元素互相比较而结束。
class ArrayDemo{
public static void main(String[] args) {
int[] arr= {89,34,-270,17,3,100};
System.out.print("排序前数组:" );
printArray(arr);
bubbleSort(arr);
System.out.print("排序后数组:" );
printArray(arr);
}
public static void bubbleSort(int[] arr){
for(int x = 0; x < arr.length - 1; x++){
for(int y = 0; y < arr.length - 1 -x; y++){
if(arr[y] > arr[y+1]){
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
public static void printArray(int[] arr){
System.out.print("[" );
for(int x = 0; x < arr.length; x++){
if(x != arr.length - 1)
System.out.print(arr[x] + "," );
else
System.out.println(arr[x] + "]" );
}
}
}