java培训代码:选择排序和二分查找

[来源] 达内    [编辑] 达内   [时间]2012-06-19

选择排序和二分查找

 今天跟大家分享一段java培训中的代码,选择排序和二分查找,话不多说,直接上代码~

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;  
}
}

以上就是整段代码,大家在使用的时候只需要针对自己的需求稍加改动就可以了

资源下载