数组
初始化一维数组:
int arr[] = new int[]{1,2,3,5};
int arr2[] = {34,23,12,6};
两种方式都行。
初始化二维数组:
int myarr[] = {{12, 0}, {45, 10}};
填充替换数字元素
可通过Arrays类的静态方法fill()
fill( int[] a, int fromIndex, int toIndex, int value ) //包括fromIndex,不包括toIndex
int arr[] = new int[]{45,12,2,10};
Arrays.fill(arr, 1, 2, 8); //把12换成8
对数组进行排序
通过Arrays类的静态sort()方法
Arrays.sort(object); //根据字典编排顺序升序排列
复制数组
Arrays类的copyOf()、copyOfRange()方法
copyOf(arr, int newlength) //复制数组至指定长度,若新数组长度大于arr,则用0填充
copyOfRange(arr, int fromIndex, int toIndex) //将arr的指定长度复制到新数组中
int newarr[] = Arrays.copyOf( arr, 5 );
int newarr2[] = Arrays.copyOf( arr, 0, 3 );
数组查询
Arrays类的binarySearch()方法
binarySearch(Object[], Object key)
int index = Arrays.binarySearch(arr, 4); //查询arr[]中值为4的索引号
binarySearch(Object[], int fromIndex, int toIndex, Object key) //在指定范围内检索某一元素,前闭后开区间
数组排序算法
1.冒泡排序
public class BubbleSort {
public static void main(String[] args) {
//创建一个数组,这个数组是乱序
int[] arr = {63, 4, 24, 1, 3, 15};
//创建冒泡排序类的对象
BubbleSort sorter = new BubbleSort();
//调用排序方法将数组排序
sorter.sort(arr);
}
/**
* 冒泡排序
* @param arr
* 要排序的数组
*/
public void sort(int[] arr){
for (int i=1; i<arr.length; i++){
//比较相邻两个元素,较大的数往后冒泡
for (int j = 0; j<arr.length - i; j++){
if(arr[j] > arr[j+1]){ //比较相邻位,并换位
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
showArray(arr); //输出冒泡后的数组元素
}
private void showArray(int[] arr) {
for (int i=0; i<arr.length; i++){
if(i==0){System.out.print(arr[i]);}
else{System.out.print("<" + arr[i]);}
}
System.out.println();
}
}
2.直接选择排序
public class SelectSort {
public static void main(String[] args) {
//创建一个乱序数组
int[] arr = {63, 4, 24, 1, 3, 15};
//创建直接排序类的对象
SelectSort sorter = new SelectSort();
//调用排序方法将数组排序
sorter.sort(arr);
}
private void sort(int[] arr) {
int index;
for (int i=1; i<arr.length; i++){
index = 0;
for(int j=1; j<=arr.length-i; j++){
if(arr[j] > arr[index]){
index = j;
}
}
// 交换在位置arr.length-i和index(最大值)上的两个数
int temp = arr[arr.length-i];
arr[arr.length-i] = arr[index];
arr[index] = temp;
}
showArray(arr); //输出直选排序后的数组元素
}
private void showArray(int[] arr) {
for (int i=0; i<arr.length; i++){
if(i==0){System.out.print(arr[i]);}
else{System.out.print("<" + arr[i]);}
}
System.out.println();
}
}
反转排序
//反转排序
public void sortreverse(int[] arr){
System.out.println("数组原有内容:");
showArray(arr);
int temp;
int len = arr.length;
for(int i=0; i<len/2; i++){
temp = arr[i];
arr[i] = arr[len-1-i];
arr[len-1-i] = temp;
}
System.out.println("数组反转后内容:");
showArray(arr);
}
````
####此外,Arrays类还提供其他操作数组方法