"黑马程序员"数组(Array)学习笔记

来源:互联网 发布:淘宝上哪家光威是正品 编辑:程序博客网 时间:2024/05/01 01:48

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

数组

数组的定义:数组是同一种数据类型的集合,也可以把它看成一个容器。Java语言的数组与js的数组有所区别,js数组可以是不同数据类型的集合,原因在于java是强类型语言,js是弱类型语言。

定义格式:

数据类型[] 数组名 = new 数据类型[];

或者 数据类型 数组名[] = new  数据类型[];

当明确数组的元素的时候,也可以使用静态初始化

数据类型[] 数组名 = {元素1,元素2,元素3,......}

使用数组的优点在于数组中的每个元素都有相应的下表,方便使用与操作。

内存分析:















数组常见的操作:

选择排序法

class ArrayDemo01 //选择排序法{public static void main(String[] args) {int[] arr = {10,15,32,65,45};printArr(arr);//排序前输出selectSort(arr);//排序printArr(arr);//排序后遍历数组}publicstaticvoid printArr(int[] arr){for(int i = 0;i<arr.length;i++){System.out.println("arr["+i+"]="+arr[i]);}}publicstaticvoid selectSort(int[] arr){for(int i = 0;i<arr.length-1;i++){for(int j = i;j<arr.length-1;j++){if(arr[i]>arr[j+1]){int temp = arr[i];arr[i] = arr[j+1];arr[j+1] = temp;}}}}}


冒泡排序法

class  ArrayDemo{public static void main(String[] args) {int[] arr = {24,36,48,1,5};printArr(arr);bubbleSort(arr);printArr(arr);}publicstaticvoidbubbleSort(int[] arr){for(int i = 0;i<arr.length-1;i++){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;}}}}publicstaticvoidprintArr(int[] arr){for(int i = 0;i<arr.length;i++){System.out.println("arr["+i+"]: "+arr[i]);}}}





 

虽然两种排序都能产生同样的结果,但是原理上是不同的。选择排序是选中一个元素后,一次往后按顺序排,冒泡排序,顾名思义,就想冒泡似的大的数据一次往后面移动。我认为两者最明显的区别是前者先确定小角标的元素,后者先确定大角标元素。

 

折半查找法(二分法)

二分查找法需要有序的数组才能进行,int[] arr = {24,36,48,1,5,6,40,80,100};这样的一个数组,首先要进行排序才能用折半查找,所以借用上面的排序程序,直接加入折半的方法

publicstatic int binSearch(int[] arr,int key){int max,mid,min;max = arr.length-1;min = 0;mid = (max+min)>>1; //这里是位运算,右移相当于除以2while(min<=max){mid = (max+min)>>1; //这里是位运算,右移相当于除以2if(arr[mid]>key)max = mid-1;else if(arr[mid]<key)min = mid+1;else return mid;}return -mid-1;}


折半查找效率较快,节省内存空间。他的原理就是从中间开始查找,若是key比中间的数大,则比中间数小的一半全部舍弃,再从另一半查找,依此类推。

二维数组

二维数组和一位数组用法基本上一样,他就像一个大容器里面装了一些小容器,小容器里面装的是东西。

它的定义格式:

数据类型[][] 数组名 = new 数据类型

其他定义方法和一位数组都类似。

二维数组的遍历需要双重循环的嵌套,当然,三维数组需要三个循环的嵌套。

 

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
0 0
原创粉丝点击