您的位置:首页 > 编程语言 > Java开发

java选择排序和二分查找

2009-08-23 12:44 375 查看
package cn.com.exception;

public class Search
{

public static void main(String[] args)
{
int[] arr = {1,3,4,56,34,22,35,87,23};
Search.searchSort(arr);
for(int e: arr){
System.out.print(e + " ");
}
System.out.println();
int index = Search.binarySearch(arr, 22);
System.out.println(index);
}

// 选择排序(主要是用K记录位置避免多次交换)
public static void searchSort(int[] a){
int temp, k;
for(int i = 0; i < a.length; i++){
k = i;
for(int j = k + 1; j < a.length; j++){
if(a[j] < a[k]){
k = j;
}
}
if(k != i){
temp = a[i];
a[i] = a[k];
a[k] = temp;
}
}
}

// 二分法查找(每次折半根据与中间位置的对比向左向右继续折半)
public static int binarySearch(int[] a, int num){
if(a.length == 0) return -1;
int startPos = 0;
int endPos = a.length - 1;
int m = (startPos + endPos) / 2;
while(startPos <= endPos){
if(num == a[m]) return m;
if(num > a[m]){
startPos = m + 1;
}
if(num < a[m]){
endPos = m - 1;
}
m = (startPos + endPos) / 2;
}
return m;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: