概述
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
1、概述
数组是同一种类型数据的集合,数组是一个数据的容器。可以自动给数组中的元素进行编号。
java中数组的定义: ①int[] arr = new int[3];、②int [] arr = new int[]{1,2,3};、③int[] arr = {1,2,3};这三种方式都可以正确的创建数组。
从上面数组的定义,我们知道,创建一个数组和创建一个对象一样,都是使用new关键字来创建。当new关键字创建一个数组时,会在堆内存中开辟一片内存存储数组对象,并提供一个首地址,栈内存中的数组变量通过首地址访问数组。
当数组被创建后,都有默认的初始化值,我们可以通过数组下标,来设置或者取出指定的数组元素。数组的下标从0开始,length-1结束。注意,第一个元素的下标是0,而不是1。
在使用数组脚标时常见的异常:ArrayIndexOutOfBoundsException(数组越界异常),例如:数组arr的length为2,当试图取出arr[2],就会出现这个异常。
2、遍历数组:使用指定格式打印数组元素。
public static void arrayPrint(int[] arr){
System.out.print("[");
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
if(i == arr.length-1){
System.out.println("]");
}
else{
System.out.print(",");
}
}
}
3、数组的排序
①选择排序:(升序)
第一趟:用第一个元素,与后面的元素逐个比较,碰到比第一个元素小的,则交换值,再与后面的元素进行比较,直到得出最小值,把最小值放在第一个位置。
第二趟:用第二个元素,与后面的元素逐个比较,碰到比第二个元素小的,则交换值,再与后面的元素进行比较,直到得出最小值,把最小值放在第二个位置。
..............
第n-1趟:用第n-1个元素,与第n个元素比较,取得小值放在第n-1位置。排序结束
编码如下:
public static void selectSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
int temp = 0;
if(arr[i]>arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
②冒泡排序法:相邻的两个元素进行比较,符合则换位。第一趟完成后,得到了一个最大值(升序时),并且最大值的位置是length-1。也就是说,每趟完成后,都得到一个最大值,并将这个最大值放在每一趟的最后一个位置。第一趟最大值存放的位置是(length-1),第二趟是(length-2),....,第length趟的最大值在0位置。结束
编码如下:
public static void bubbleSort(int[] arr){
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-i-1;j++){ //for中的“arr.length-i-1”,其中“-i”每一趟结束后,就减少一个进行比较的元素,“-1”是为了避免数组越界。
int temp = 0;
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
③查找操作:
普通查找方式:查找某个数在数组中的位置,如果存在则返回正确的位置,如果不存在,则返回-1
public static int getIndex(int[] arr ,int key){
for(int i=0;i<arr.length;i++){
if(arr[i] == key){
return i;
}
}
return -1;
}
折半查找:这种查找方式效率高,但是必须要保正数组是有序的。
public static int halfSearch(int[] arr,int key){
int min = 0;//定义最小脚标,并初始化,初始最小脚标是0
int max = arr.length-1;//定义最大脚标,并初始化,初识最大脚标是length-1
int mid;//定义中间脚标
while(min<=max){
mid = (min + max)/2;//初始化中间脚标,中间脚标等于最小脚标加上最大脚标,除以2
if(key > arr[mid]){ //如果待查找的数比第mid位置的元素大,说明该元素可能位于第mid位置之后
min = mid + 1;//于是,把最小脚标设置为(mid+1);
}else if(key < arr[mid]){ //反之,如果小于,则说明该元素可能位于第mid位置之前
max = mid - 1; //于是,把最大脚标设置为(mid-1)。
}else{
return mid; //如果相等,则查找结束。
}
}
return -1; //找不到相应的元素,则返回-1
}
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
最后
以上就是温婉大门为你收集整理的黑马程序员:数组和数组的操作的全部内容,希望文章能够帮你解决黑马程序员:数组和数组的操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复