数组的补充方法
在《数组》文章中简单的介绍了数组的基本格式和实现案例,此处不做说明,此文主要是补充一些数组的使用方法。例如:增强版的遍历、逆序、冒泡排序、二分法查找。
增强版遍历:
1.与普通遍历的区别:
普通的遍历给人的直观感觉不是很好,输出的元素都是排列不好看,所以需要增强版的遍历
2.源代码:
public static void printArray(int[] arr){
//输出一半中括号
System.out.print("[");
for(int i = 0;i < arr.length;i++){
if(i == arr.length - 1){
System.out.print(arr[i]+"]");
}else{
System.out.print(arr[i]+",");
}
}
}
3.缺点:
不适用于遍历二维以上的数字。
数组的逆序:
1.逆序的描述:
逆序是指位置信息的大小与数据大小的排序相反。
2.源代码:
public static void ReverseOrder(int[] arr){
int temp ;
for(int min = 0,max = arr.length-1; min < max ;min++,max--){
temp = arr[min];
arr[min] = arr[max];
arr[max]=temp;
}
}
3.练习数组的逆序方法的作用:
逆序练习中运用到了指针的思想,练习它能够初步了解数组中指针的使用。
冒泡排序:
1.冒泡排序与普通排序的区别:
普通排序是将第一个数与它后面的所有的数相比较,然后确定它的位置,之后是拿第二个数与后面的数进行比较,然后确定第二个数的位置,依次类推。这种排序的方法,需要将一个数与除它之外所有的数进行比较,所以时间要消耗的多,很多情况下不适用。
冒泡排序,是采用比较相邻的数的方法,没一个轮回的比较都会产生一个最值,然后,这个最值就不需要在进行比较排序了,这种方法会减少比较的次数,节约时间。
2.源代码:
public static void bubbleSort(int[] arr){
for(int i = 0;i < arr.length-1;i++){
//每次内循环的比较,从0索引开始,每次都在递减
for(int j = 0 ;j < arr.length-i-1;j++){
//相邻的数组元素比较
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
二分法查找:
1.查找索引是一件十分常用的事情,如果是遍历所有的文件然后再查找出对应的索引是很耗时间的,所以才会需要二分法查找索引。
2.源代码:
public static int binarySearch1(int[] arr,int number){
int minIndex = 0 ;
int maxIndex = arr.length -1 ;
int midIndex = 0;
while( minIndex <= maxIndex){
midIndex =(minIndex + maxIndex)/2;
if(number > arr[midIndex]){
minIndex = midIndex + 1;
}else if(number < arr[midIndex]){
maxIndex = midIndex - 1;
}else{
//找到元素
return midIndex;
}
}
return -1;
}
3.二分法使用的注意:必须是有序数组
下图中有数组方法的内存图,以及一些Eclipse基本操作和快捷键:
- 第八天的学习思维导图: