---------------------- <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); //排序后遍历数组
}
public static void printArr(int[] arr)
{
for(int i = 0;i<arr.length;i++)
{
System.out.println("arr["+i+"]="+arr[i]);
}
}
public static void 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);
}
public static void bubbleSort(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;
}
}
}
}
public static void printArr(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};这样的一个数组,首先要进行排序才能用折半查找,所以借用上面的排序程序,直接加入折半的方法
public static int binSearch(int[] arr,int key)
{
int max,mid,min;
max = arr.length-1;
min = 0;
mid = (max+min)>>1; //这里是位运算,右移相当于除以2
while(min<=max)
{
mid = (max+min)>>1; //这里是位运算,右移相当于除以2
if(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>、期待与您交流! ----------------------