数组
数组的概论
数组是具有相同数据类型的一组数据的集合
一维数组
创建一维数组:
数组的声明:
数组元素的类型[ ] 数组名;
数组元素的类型 数组名[ ];
初始化一维数组:
数组与基本数据类型一样可以进行初始化操作,有以下两种方法:
int arr[ ] = new int[ ]{1,2,3,4,5,25}
int arr2[ ] ={34,23,12,6}
使用一维数组:
在Java集合中,一维数组是常见的一种数据结构。
package wudanyuan;
public class shuzu5_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int day[]=new int[] {31,28,31,30,31,30,31,31,30,31,30,31};//创造并初始化一维数组
for(int i=0;i<day.length;i++) {//利用循环将信息输出
System.out.println((i+1)+"月有"+day[i]+"天");//输出
}
}
}
二维数组
创建二维数组:
二维数组的声明:
数组元素的类型[ ] [ ] 数组名;
数组元素的类型 数组名[ ] [ ];
初始化二维数组:
二维数组初始化与一维数组初始化类似,同样可以使用大括号完成
语法如下:
type arrayname [ ][ ] = {value1,value2,...valuen}
type = 数组数据类型
arrayname =数组名称,一个合法的标识符
value = 二维数组中各元素,都代表一个一维数组
初始化二维数组,代码如下:
int myarr[ ][ ] ={12,0},{45,10}
使用二维数组:
二维数组在实际应用中用的非常广泛,实例如下:
package wudanyuan;
public class shuzu5_2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
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();
}
}
}
数组的基本操作
遍历数组:
遍历数组就是获取数组中的每个元素
package wudanyuan;
public class shuzu5_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int b[][]=new int[][] {{1},{2,3},{4,5,6}};
for(int k = 0;k < b.length;k++) {
for(int c = 0;c < b[k].length;c++) {
System.out.print(b[k][c]);
}
System.out.println();
}
}
}
使用foreach语句遍历二维数组:
package wudanyuan;
public class shuzu5_4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr2[][]= {{4,3},{1,2}};
System.out.println("数组中的元素是:");
int i = 0;
for(int x[]:arr2) {
i++;
int j = 0;
for(int e:x) {
j++;
if(i==arr2.length&&j==x.length) {
System.out.print(e);
}else
System.out.print(e+"、");
}
}
}
}
充填替换数组元素
替换数组元素
Arrays.fill(数组名,值)
替换数组部分元素:前改后不改
Arrays.fill(数组名,前索引,后索引,值)
package wudanyuan;
import java.util.Arrays;
public class shuzu5_5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = new int[5];
Arrays.fill(arr, 8);
for(int i = 0;i < arr.length;i++) {
System.out.println("第"+i+"个元素是:"+arr[i]);
}
}
}
package wudanyuan;
import java.util.Arrays;
public class shuzu5_6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = new int[] {45,12,2,10};
Arrays.fill(arr, 1,2,8);
for(int i = 0;i < arr.length;i++) {
System.out.println("第"+i+"个元素是:"+arr[i]);
}
}
}
对数组经行排序
package wudanyuan;
import java.util.Arrays;
public class shuzu5_7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = new int[] {23,42,12,8};
Arrays.sort(arr);
for(int i = 0;i < arr.length;i++) {
System.out.println(arr[i]);
}
}
}
复制数组
复制数组元素:空位补0,溢出去掉
新数组名 = Arrays.copyOf(旧数组名,新数组长度)
复制数组的部分元素:前在后不在
新数组名 = Arrays.copyOfRange(旧数组名,前索引,后索引)
package wudanyuan;
import java.util.Arrays;
public class shuzu5_8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = new int[] {23,42,12};
int newarr[] = Arrays.copyOf(arr, 5);
for(int i = 0;i < newarr.length;i++) {
System.out.println(newarr[i]);
}
}
}
package wudanyuan;
import java.util.Arrays;
public class shuzu5_9 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = new int[] {23,42,12,84,10};
int newarr[] =Arrays.copyOfRange(arr, 0, 3);
for(int i = 0;i < newarr.length;i++) {
System.out.println(newarr[i]);
}
}
}
查询数组
查询数组:先排序在查询
索引 = Arrays.binarySearch(数组名,元素)
查询数组:先排序在查询,前含后不含
索引 = Arrays.binarySearch(数组名,前索引,后索引,元素)
package wudanyuan;
import java.util.Arrays;
public class shuzu5_10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int ia[] = new int[] {1,8,9,4,5};
Arrays.sort(ia);
int index = Arrays.binarySearch(ia,4);
System.out.println("4的索引位置是:"+index);
}
}
package wudanyuan;
import java.util.Arrays;
public class shuzu5_11 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str[]= new String[] {"ab","cd","ef","yz"};
Arrays.sort(str);
int index = Arrays.binarySearch(str,0,2,"cd");
System.out.println("cd的索引位置是:"+index);
}
}
数组排序算法
冒泡排序
package wudanyuan;
public class shuzu5_12 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array = {63,4,24,1,3,15};
shuzu5_12 sorter =new shuzu5_12();
sorter.sort(array);
}
public void sort(int[] array) {
for(int i = 1;i < array.length;i++) {
for(int j = 0;j < array.length-i;j++) {
if(array[j]>array[j+1]) {
int temp = array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
showArray(array);
}
public void showArray(int[]array) {
for(int i:array) {
System.out.print(">"+i);
}
System.out.println();
}
}
直接选择排序
package wudanyuan;
public class shuzu5_13 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[]array= {63,4,24,1,3,15};
shuzu5_13 sorter =new shuzu5_13();
sorter.sort(array);
}
public void sort(int[] array) {
int index;
for(int i = 1;i<=array.length;i++) {
index = 0;
for(int j = 1;j<=array.length-i;j++) {
if(array[j]>array[index]) {
index = j;
}
}
int temp = array[array.length-i];
array[array.length-i]=array[index];
array[index]=temp;
}
showArray(array);
}
public void showArray(int[]array) {
for(int i:array) {
System.out.print(">"+i);
}
System.out.println();
}
}
反转排序
package wudanyuan;
public class shuzu5_14 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[]array= {10,20,30,40,50,60};
shuzu5_14 sorter =new shuzu5_14();
sorter.sort(array);
}
public void sort(int[] array) {
System.out.println("数组原有内容:");
showArray(array);
int temp;
int len = array.length;
for(int i=0;i < len/2; i++) {
temp = array[i];
array[i]=array[len-1-i];
array[len-1-i]=temp;
}
System.out.println("数组反转后内容:");
showArray(array);
}
public void showArray(int[] array) {
for(int i:array) {
System.out.print("\t"+i);
}
System.out.println();
}
}