您的位置:首页 > 职场人生

黑马程序员_JavaSE基础05 之 数组的操作 求最值 排序 折半查找

2012-09-02 18:22 274 查看
----------------------android培训、java培训、期待与您交流!---------------------

JavaSE_05笔记

Java语言基础之数组的操作求最值排序折半查找


1、关于数组定义两种方式

①只指定存储空间大小,不明确空间的具体数据。

②明确空间的具体数据。


2、关于数组的操作

对数组基本操作是存和取,核心思想是对角标的操作。

演化成遍历、最值、排序、查找。


3、对数组求最值得操作

两种方式使用max记录最大值;或者maxIndex记录。

	//方式二用角标获取数组最大值的方法

	publicstaticintGetMax2(int[]arr)

{

//定义变量记录最大值的角标

		intmaxIndex=0;

		for(inti=1;i<arr.length;i++)

{

if(arr[i]>arr[maxIndex])

{

maxIndex=i;

}

}

		returnarr[maxIndex];

}



4、使用选择排序实现从小到大排序

思路:外循环控制总比较次数,内循环控制一个元素的比较次数,内部循环实现是让第i个元素和其身后的每个元素进行比较,若arr[i]>arr[i+1..],那么就换位,总之是让arr[i]记录的是最小值。

//注意的是返回值不用再返回数组了,因为你是对堆内存的操作,不随函数的结束而结束,说白了原数组随着你的鼓捣而发生了改变。

//[34,19,11,3,56]

	publicstaticvoidselectSort(int[]arr)

{

//外层控制总循环次数

		for(inti=0;i<arr.length-1;i++)

{

//内存控制当前元素的循环

			for(intj=i+1;j<arr.length;j++)//从小到大

{

//因为从小到大,若第i位大于第i+1位,那么换

if(arr[i]>arr[j])

{

					inttemp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

}

}

}

}


5、使用冒泡排序实现从小到大排序

思路:首先外层进行比较次数的循环,内层控制一个元素比较的循环,内循环借用第三方变量实现相邻两个元素的比较,反正是让最后的值最大,对于从小到大排序前提是是max[i]>max[i+1],才能换位。

//[34,19,11,3,56]

	publicstaticvoidbubbleSort(int[]arr)

{

		for(inti=0;i<arr.length-1;i++)

{

			for(intj=0;j<arr.length-i-1;j++)

{

//因为对于从小到大,若第j位大于第j+1位,就换

if(arr[j]>arr[j+1])

{

					inttemp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

}


6、排序总结:对于从小到大排序。

选择排序的核心思想是:拿一个元素和身后所有的值比较,反正我要保证这个元素值最小。我要保证第1位最小。

冒泡排序的核心思想是:拿相邻两个元素比较,反正我要保证最后一个元素值最大。我要保证最后一位最大。


7、折半查找:对于有顺序的数据

//折半查找
publicstaticinthalfSearch(intarr[],intkey)
{
intmin=0;
intmax=arr.length;
intmid=(min+max)/2;
while(min<=max)
{
if(arr[mid]>key)
{
min=mid+1;
}
elseif(arr[mid]<key)
{
max=mid-1;
}
else
returnmid;
}
return-1;
}


		return-1;


}


2012/9/02ByMary_k


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java android 语言 存储