(Java)数组的选择排序法和二分查找法实现

来源:互联网 发布:协作办公软件 编辑:程序博客网 时间:2024/06/01 13:02

1、选择排序法

public class SelectionSort {public static void main(String[] args) {double[] numbers={3,2,5,4,6,8,1,7,9,0};//调用SelectionSort选择排序方法SelectionSort(numbers);for(int i=0;i<numbers.length;i++)System.out.print(numbers[i]+"  ");System.out.println();char[] chars={'b','a','e','d','c'};//调用java.util.Arrays类中sort排序方法java.util.Arrays.sort(chars);for(int i=0;i<chars.length;i++)System.out.print(chars[i]+"  ");}//选择排序法(以升序为例),先找到最大数放在列表最后,再在剩下的数中找到最大数,放到剩下这些数最后,如此进行下去public static void SelectionSort(double[] list){for(int i=list.length-1;i>=1;i--){double currentMax=list[0];int currentMaxIndex=0;for(int j=1;j<=i;j++){if(list[j]>currentMax){currentMax=list[j];currentMaxIndex=j;}}if(currentMaxIndex!=i){list[currentMaxIndex]=list[i];list[i]=currentMax;}}}}

运行结果:

0.0   1.0   2.0   3.0   4.0   5.0   6.0   7.0   8.0   9.0 
a   b   c   d   e


2、二分查找法

public class BinarySearch {public static void main(String[] args) {//已排序的numbers数组int[] numbers={1,2,3,4,5,6,7,8,9};System.out.print(BinarySearch(numbers,3));System.out.println();System.out.print(BinarySearch(numbers,10));System.out.println();//调用java.util.Arrays的binarySearch二分查找方法System.out.print(java.util.Arrays.binarySearch(numbers, 7));}//二分查找法,前提是数组已排序//若关键字在数组中,则返回该数下标,否则返回(-插入点-1),插入点 被定义为将键插入数组的那一点:即第一个大于此键的元素索引public static int BinarySearch(int[] list,int key){int low=0;int high=list.length-1;while(low<=high){int mid=(low+high)/2;if(key<list[mid])high=mid-1;else if(key==list[mid])return mid;else low=mid+1;}return -low-1;}}


运行结果:

2

-10

6