黑马程序员-day04数组排序,查找
2014-10-21 00:23
323 查看
1.数组的几种写法
int [] arr=new int[2];int arr[]=new int[2];
int[] arr=new int[]{3,1,6,5,4};
int[] arr={3,1,6,5,4};
注意:数组对象存储于堆内存中,栈内存中存储的只是数组对象的引用地址值。
2.数组的排序
(1)选择排序
/*选择排序。
内循环结束一次,最值出现在头角标位置上。
*/
public static void selectSort(int[]arr)
{
for (int x=0;x<arr.length-1 ;x++ )
{
for (int y=x+1;y<arr.length ;y++ )
{
if (arr[x]>arr[y])
{
/*
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
*/
swap(arr,x,y);
}
}
}
}
(2)冒泡排序
/*冒泡排序
*/
public static void bubbleSort(int[]arr)
{
for (int x=0;x<arr.length-1 ;x++ )//for(int x=arr.length-1;x>0;x--)
{//for(int y=0;y<x;y++)
for (int y=0;y<arr.length-x-1 ;y++ )//-x:让每一次的元素减少,-1:避免角标越界。
{
if (arr[y]>arr[y+1])
{
/*
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
*/
swap(arr,y,y+1);
}
}
}
}
3.数组元素的查找
前提:数组元素是有序的。(1)折半查找第一种方式
/*折半查找,提高效率,但是必须保证该数组是有序的数组。
*/
public static int halfSearch(int[]arr,int key)
{
int min,max,mid;
min=0;
max=arr.length-1;
mid=(min+max)/2;
while (arr[mid]!=key)
{
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
if(min>max)
return -1;
mid=(min+max)/2;
}
return mid;
}
(2)折半查找第二种方式
/*折半的第二种方式。
*/
public static int halfSearch_2(int[]arr,int key)
{
int min,max,mid;
min=0;
max=arr.length-1;
while (min<=max)
{
mid=(min+max)>>1;
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
else
return mid;
}
return -1;
}
(3)练习
/*练习:有一个有序的数组,想要将一个元素插入到该数组中,
还要保证该数组是有序的。如何获取该元素在数组中的位置?
*/
public static int getIndex_2(int[]arr,int key)
{
int min,max,mid;
min=0;
max=arr.length-1;
while (min<=max)
{
mid=(min+max)>>1;
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
else
return mid;
}
return min;
}
相关文章推荐
- 黑马程序员 java基础 函数 数组 查找与排序总结
- 黑马程序员_Java基础_04数组main函数args详解、数组排序、二分查找实例
- 黑马程序员_数组的排序,求最值和查找
- 黑马程序员(十)数组的简单基本应用(排序,查找,十进制变2,8,16等等)
- day04获取数组的最值,选择排序,冒泡排序,折半查找
- 黑马程序员——Java学习笔记——数组的排序和查找
- 黑马程序员_JavaSE基础06 之 数组的操作 求最值 排序 折半查找
- 黑马程序员--数组的排序和查找--java学习日记2(基础知识)
- 黑马程序员03数组排序与二分法查找
- 黑马程序员_java数组排序、查找、置换
- 黑马程序员——数组概述+数组排序+数组查找-第5天
- 黑马程序员----实用的数组排序查找
- 黑马程序员---数组的学习,定义规范,排序与查找
- 黑马程序员--05JAVA数组及其排序和查找
- 黑马程序员_数组及其排序查找操作
- JAVA基础day04 数组学习 排序和查找基本算法
- 排序:查找数组中逆序对的个数
- 程序员面试题精选100题(10)-在排序数组中查找和为给定值的两个数字
- 程序员面试题精选(10)-在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字