"黑马程序员"数组(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>、期待与您交流! ----------------------
- "黑马程序员"数组(Array)学习笔记
- 黑马程序员-数组-学习笔记
- 【黑马程序员】C语言学习笔记之数组(九)
- 黑马程序员_c#基础知识学习笔记:数组
- 黑马程序员_java数组学习笔记
- 黑马程序员-Java数组学习笔记
- 黑马程序员---学习笔记4:数组
- 黑马程序员---学习笔记5:二维数组
- 黑马程序员---学习笔记8:数组指针
- 黑马程序员--C#数组和Array类
- 黑马程序员 C#数组和Array类
- Fortran学习笔记5(数组Array)
- 黑马程序员 学习日记(三)-数组
- 黑马程序员--学习日记(二)数组
- 黑马程序员-Java基础学习(数组)
- 黑马程序员---学习笔记
- 黑马程序员----学习笔记
- 黑马程序员----学习笔记
- BufferReader中的readLine()方法
- C++方法对输入的任意数进行排序
- ZOJ-1730
- QSplashScreen用QThead定时
- 两电脑一网线互联共享文件
- "黑马程序员"数组(Array)学习笔记
- 严蔚敏-数据结构-递归算法总结
- UESTC 1900 倒推数组 (找规律)
- C# 逻辑算法
- [Sparrow OS 设计文档连载(一)] Introduction
- Deep Learning Tutorials
- 每天干的事情,遇到的问题,解决的方法
- 菜鸟Android学习之路14——带图标的ListView组件
- Protocol Buffers