黑马程序员技术交流社区
标题:
总结了笔试中经常被考到的数组算法
[打印本页]
作者:
于世德
时间:
2013-7-16 12:41
标题:
总结了笔试中经常被考到的数组算法
public class ArrayTest{
//1、选择排序
public static void selectSort(int[] arr)
{
for (int x=0; x<arr.length-1; x++)
{
//每次循环之后把最小的数放在数组下标为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;
}
}
}
}
//2、冒泡排序
public static void bubbleSort(int[] arr)
{
for(int x=0; x<arr.length-1; x++)
{
//每次循环之后把最小的元素放在数组的arr.length-1-x的位置上
for(int y=0; y<arr.length-x-1; y++)
{
if(arr[y]<arr[y+1])
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
//3、对给定的数组进行反转
public static void reverseArray(int[] arr)
{
for(int start=0,end=arr.length-1; start<end ; start++,end--)
{
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
/*
* 4、折半查找 提高效率,但是必须要保证该数组是有序的数组
*/
public static int halfSearch(int[] arr,int key)
{
int min,max,mid;
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 = (max+min)/2;
}
return mid;
}
public static void main(String[] args) {
int[] arr = {5,1,6,4,2,8,9};
selectSort(arr);//{1,2,4,5,6,8,9}
bubbleSort(arr);//{9,8,6,5,4,2,1}
reverseArray(arr);//{9,8,2,4,6,1,5}
int[] arr1 = {1,3,4,5,7,8,10,20};
int index = halfSearch(arr1,8);
if(index == -1){
System.out.println("查找的元素不存在");
}else {
System.out.println(index);//5
}
}
}
复制代码
作者:
wedge
时间:
2013-7-16 13:04
不错不错~~~
作者:
神之梦
时间:
2013-7-16 14:43
支持下
作者:
于世德
时间:
2013-7-16 16:51
神之梦 发表于 2013-7-16 14:43
支持下
您的支持是我前进的动力:lol
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2