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;
}
}
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;
}
}
相关文章推荐
- Java数组遍历、求最大值、选择排序、冒泡排序、二分查找
- Java 冒泡排序,选择排序,二分查找
- java选择排序和二分查找
- java的冒泡排序、选择排序与插入排序与二分查找
- java冒泡,选择排序及折半(二分)查找
- Java选择排序、冒泡排序、直接插入排序与二分查找
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- java实现的选择排序、冒泡排序、二分查找
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- Java--冒泡、选择排序,二分查找
- java的 最大值 选择排序 冒泡排序 二分查找
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- Java四种排序:冒泡,选择,插入,二分(折半插入)
- Python 递归函数选择排序和二分查找
- 选择排序、冒泡排序、二分查找
- java基础知识4--数组,排序,二分查找
- java中选择排序,冒泡排序和二分法查找学习记录
- 黑马程序员——Java基础--冒泡、选择、二分查找
- JAVA冒泡与选择排序,折半查找
- C 语言 排序算法,冒泡排序,选择排序,插入排序,二分查找