博客
关于我
JAVA初窥-DAY07
阅读量:328 次
发布时间:2019-03-04

本文共 3272 字,大约阅读时间需要 10 分钟。

JAVA初窥-DAY07

数组的复制

因为数组在栈中存储的时其在堆中的地址,则复制数组的时候应该重新定义一个数组并开辟新的内存去存储所复制的新的数组,如:
方法1:

public static int[] copy(int[] array){   	int[] tmp = new int[array.length];	for (int i = 0; i < array.length; i++) {   		tmp[i] = array[i];	}	return tmp;}public static void main(String[] args) {   	int[] array = {   1,2,3,4,5};	int[] ret = copy(array);	System.out.println(array1);	System.out.println(Arrays.toString(ret));	}

方法2:

int[] array1 = {   1,2,3,4,5,6};int[] array2 = Arrays.copyOf(array,array.length);System.out.println(Arrays.toString(array2));//以下为部分复制int[] array3 = Arrays.copyOfRange(array1,2,4);//2,4表示从第二项复制,第四项结束,同样的,左闭右开System.out.println(Arrays.toString(array3));//此时输出array1的第2项和第3项

方法3:

int[] array = {   1,2,3,4,5,6}int[] ret = array.clone();//此方法为Object的方法ret[0] = 111;System.out.println(Arrays.toString(array));System.out.println(Arrays.toString(ret));

方法4:

int[] array = {   1,2,3,4,5};int[] copy = new int[array.length];System.arraycopy(array,0,copy,0,array.length);System.out.println(Arrays.toString(copy));

深拷贝和浅拷贝

深拷贝:拷贝完成后修改拷贝后的新数组的元素不影响原来数组的元素就叫深拷贝。
浅拷贝:修改元素数据后也会影响原数组元素的数据

数组中寻找某个元素

二分法查找某个元素,前提为数组必须有序:

public static void main(String[] args) {       int[] array = {   1,2,3,4,5,6,7,8,9,10};    int ret = binarySearch(array,9);    System.out.println(ret);}public static int binarySearch(int[] array,int key) {       int i,j,m;    int count=0;//找了多少次    for (i = 0,j=array.length-1; i <= j;) {           m=(i+j)/2;        count++;        if (array[m]==key){               return count;//若需要知道是第几个元素只需改为 return m;        }else if (array[m]>key){               j=m-1;        }else if (array[m]<key){               i=m+1;        }    }    return -1;//若数组中没有要找的数据,则输出-1}

也可直接调用Arrays工具类:

Arrays.binarySerch(array,5);//这里的5为要查找的元素,此方法的返回值为数组的角标,即array[Arrays.binarySerch(array,5)] = 5;
数组的排序

冒泡排序:

public static void main(String[] args) {       int[] array ={   9,8,7,6,5,4,3,2,1};    System.out.println(Arrays.toString(aaa(array)));}public static int bbb (int i,int[]array){   //每一趟需要比array.length-i次    for(int j=0;j<array.length-i;j++){           if (array[j]<=array[j+1]){               continue;        }else {               int tmp = array[j];            array[j]=array[j+1];            array[j+1]=tmp;        }    }}public static int aaa(int[] array){   //需要排列i趟    for (int i=1;i<array.length;i++){           bbb(i,array);    }}

冒泡排序的优化:

public static void main(String[] args) {       int[] array ={   9,8,7,6,5,4,3,2,1};    System.out.println(Arrays.toString(bubbleSort(array)));}public static void bubbleSort(int[] array){   	for (int i=0;i<array.length-1;i++){   		boolean falg = false;//默认每一趟不交换		for(int j=0;j<array.length-i-1;j++){           	if (array[j] > array[j+1]){           		int tmp = array[j];            	array[j]=array[j+1];            	array[j+1]=tmp;            	falg = ture;//交换过后修改falg的值        	}    	}    	if falg = false{       		break;//若此趟没有任何元素交换,则跳出    	}    }}	}}

直接调用工具进行有序排列:

Arrays.sort(array);System.out.println(Arrays.toString(array));
数组中寻找最大值
public static void main(String[] args) {       int[] array ={   9,8,7,6,5,4,3,2,1};    System.out.println(max(array));}public static int[] max (int[] array){   	int max = array[0];	for (int i=1;i<array.length;i++){   		if(array[i]>max){   			max = array[i];		}	}	return max;}

转载地址:http://hwbe.baihongyu.com/

你可能感兴趣的文章
Idiot 的间谍网络
查看>>
MySql索引及使用、实现的数据结构
查看>>
初探SSRF漏洞
查看>>
四级单词部分(整理)
查看>>
JavaFX\FXML\CSS的简单使用
查看>>
【python】理解列表推导式以及列表推导式嵌套
查看>>
pythonBug入门——从零开始学python
查看>>
Vue.js——v-model结合checkbox类型——2020.11.22
查看>>
Mybatis核心配置文件--常用标签详解
查看>>
R语言练习题答案(3)
查看>>
jQuery 事件及动画
查看>>
[电影]《Ladybird》演绎完整18岁的青春
查看>>
js中[]、{}、()的区别
查看>>
js-禁止右键菜单代码、禁止复制粘贴代码
查看>>
血色先锋队
查看>>
win10系统安装配置Go环境包(第0章)
查看>>
搭建samba服务器
查看>>
Java: 错误: 不支持发行版本 5
查看>>
顺序表的操作总结
查看>>
Java基础语法
查看>>