Java基础二 ~~~

数组

1、数组创建语法

1.1 先声明、再分配空间

写法:
数组类型[ ] 数组名;
数组名 = new 数据类型[长度];

int[] array;
array = new int[5];

.

1.2 声明并分配空间

写法:
数组类型[ ] 数组名 = new 数据类型[长度];

int[] array = new int[5];

.

1.3 声明并赋值

1)声明并赋值(繁)

写法:
数据类型[ ] 数组名 = new 数据类型[ ]{v1,v2,v3……};

double[] array = new double[]{1.1,2.2,3.3};
2)声明并赋值(简)

写法:
数据类型[ ] 数组名 = {v1,v2,v3……};

int[] array ={1,3,7};

.

2、数组的知识

2.1 概念

  • 一组连续的存储空间,存储多个相同数据类型的值。
  • 基本数据类型的变量存储的是值,引用数据类型的变量存储的是地址。
  • 访问元素时,需要通过“下标”(从0开始)

内存:

array137
下标012
System.out.print(array[1]); //输出结果为:3

.

2.2 数组的默认值

public class Test{
	public static void main(String[] args){
		int[] a = new int[3];
		for(int i=0;i<a.length;i++){	//数组名.length 为动态获得数组长度
			System.out.print(a[i]);
		}
	}
}

运行结果:
000

各类型数组的默认值为:
整数:0
小数:0.0
字符:’\u0000’
布尔:false
其他:null
.

3、数组的“扩容”

3.1 思路

因 在创建数组时,必须显式指定长度,并且在创建之后不可更改长度。

  • 创建大于原数组长度的新数组
  • 将原数组中的元素一次复制到新数组中

.

3.2 方式

  • 循环将原数组中的所有元素逐一赋值给新数组。
  • System.arraycopy(原数组,原数组起始下标,新数组,新数组起始下标,新长度)
  • 数组类型的变量 = java.util.Arrays.copyOf(原数组,新长度);//根据长度创建数组,返回带有原值的新数组

3.3 地址的替换

郑老师作品
nums = newNums; //将新数组的地址,赋值给nums变量
.

4、数组的排序

4.1 直接插入排序

将第一个数和第二个数排序,然后构成一个有序序列
将第三个数插入进去,构成一个新的有序序列。
对第四个数、第五个数……直到最后一个数,重复第二步。

public void inserSort(int[] array){
	int temp=0;
	for(int i=1;i<array.inserSort;i++){
		temp=a[i];
		int j=i-1;
		while(j>=0 && a[j]>temp){
		a[j+1]=a[j];
		j--;
		}
		a[j+1]=temp;
	}
}

4.2 冒泡排序

将序列中所有元素两两比较,将最大的放在最后面。
将剩余序列中所有元素两两比较,将最大的放在最后面。
重复第二步,直到只剩下一个数。

public void bubbleSort(int[] array){
	int temp=0;
	for(int i=0;i<array.length;i++){
		for(int j=0;j<array.length-i-1;j++){
			if(a[j]>a[j+1]){
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}
}

4.3 快速排序

选择第一个数为p,小于p的数放在左边,大于p的数放在右边。
递归的将p左边和右边的数都按照第一步进行,直到不能递归。

public static void quickSort(int[] numbers,int starat,int end){
	if(start<end){
		int base=numbers[start];
		int temp=0;
		int i=start,j=end;
		do{
			while( (numbers[i]<base) && (i<end) )
				i++;
			while( (numbers[j]>base) && (j>start) )
				j++;
			if(i<=j){
			temp=numbers[i];
			numbers[i]=numbers[j];
			numbers[j]=temp;
			i++;
			j++;
			}
		}while(i<=j);
		if(start<j)
			quickSort(numbers,start,j);
		if(end>i);
			quickSort(numbers,i,end);
	}
}

.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值