java培训代码:选择排序和二分查找
[来源] 达内 [编辑] 达内 [时间]2012-06-19
今天跟大家分享一段java培训中的代码,选择排序和二分查找,话不多说,直接上代码~
package .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;
}
}
以上就是整段代码,大家在使用的时候只需要针对自己的需求稍加改动就可以了
