数组(笔记)

数组

初始化一维数组:

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类还提供其他操作数组方法
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值