排序算法详见?冒泡&&选择排序
二分法查找
public int binarySearch(int[] a, Integer num) {
int low = 0;
int high = a.length - 1;
int mid = 0;
int result = 0;
while (low <= high) {
mid = (high + low) / 2;
if (num.compareTo(a[mid]) == -1) {
high = mid - 1;
} else if (num.compareTo(a[mid]) == 1) {
low = mid + 1;
} else {
result = mid+1;//直接返回所查元素的位置,避免了因为要找的元素的索引为0,而在主函数中出错
break;
}
}
return result;
}
数组初始化函数
public int[] initArray(int n) {
Random random = new Random();
int[] a = new int[n];
for (int i = 0; i < a.length; i++) {
a[i] = random.nextInt(n * 10) + 1;
}
return a;
}
主函数
主函数中涉及的排序算法在文章开头有说明!
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ProgramList2 pl2 = new ProgramList2();
System.out.print("请输入数组长度:");
int n = input.nextInt();
int[] beforeSort = pl2.initArray(n);
int[] afterSort = pl2.sortFunc2(beforeSort);
for(int i = 0;i<afterSort.length;i++){
if(i%10==0&&i!=0){
System.out.println();
}
System.out.print(afterSort[i]+" ");
}
System.out.println();
System.out.print("请输入要查找的数:");
int num = input.nextInt();
int result = pl2.binarySearch(afterSort, num);
if(result==0){
System.out.println("没有");
}else{
System.out.println("在第"+result+"个位置");
}
}
写在最后:Arrays.binarySearch(int [] a, key);通过静态方法binarySearch(),可以实现二分查找.如果key在数组中,则返回搜索值的索引;否则返回第一个大于该键的元素的索引。
本文主要是作为本人学习的一个笔记,欢迎各位大佬打扰指点!!!?