黑马程序员技术交流社区
标题:
排序,查找,数组小结
[打印本页]
作者:
李前进
时间:
2014-3-26 01:50
标题:
排序,查找,数组小结
import java.util.*;
class ArrayTest
{
public static void main(String[] args)
{
int arr[]={0,1,2,4,6,8,9};
//在排序前打印
System.out.print("排序前的数组:");
printArray(arr);
//选择排序
//selectSort(arr);
//冒泡排序
//bubbleSort(arr);
//Java自带排序
//Arrays.sort(arr);
//查找数组中的元素
//int index=getIndex(arr,2);
//System.out.println("2所在位置下角标为:"+index);
//折半查找
//int index=halfSearch(arr,6);
//System.out.println("6所在位置下角标为:"+index);
//折半查找第二种方式
//int index=halfSearch_2(arr,6);
//System.out.println("6所在位置下角标为:"+index);
//在排序后打印
//System.out.print("排序后的数组:");
//printArray(arr);
}
//选择排序
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);
}
}
}
}
//冒泡排序
public static void bubbleSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
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);
}
}
}
}
//换位置功能
public static void swap(int[] arr,int a,int b)
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
//查找数组中的元素,从头到尾顺序查找
public static int getIndex(int[]arr,int key)
{
for(int x=0;x<arr.length;x++)
{
if(arr[x]==key)
return x;
}
return -1;
}
//折半查找,效率高,但是必须保证数组为有序数组
public static int halfSearch(int[] arr,int key)
{
int min=0,max=arr.length-1,mid=(max+min)/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=(mid+max)/2;
}
return mid;
}
//折半查找第二种方式
public static int halfSearch_2(int[] arr,int key)
{
int min=0,max=arr.length-1,mid=(max+min)/2;
while(min<=max)
{
mid=(max+min)>>1;
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
else
return mid;
}
return -1;
}
//遍历数组,美化打印格式
public static void printArray(int[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+", ");
else
System.out.println(arr[x]+"]");
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2