首页 > 代码库 > 快速排序和折半查找
快速排序和折半查找
package BinarySerach;import java.util.Scanner;public class BinarySerch { /** *折半查找和快速排序 */ static final int N = 15; static void quickSort(int [] array,int left,int right){ int f,t; int ltemp =left; int rtemp = right; //确定分界值 f = array[(left+right)/2]; while(ltemp < rtemp){ while(array[ltemp] <f){ ++ltemp; } while(array[rtemp] > f){ --rtemp; } if(ltemp <= rtemp){ t = array[ltemp]; array[ltemp] = array[rtemp]; array[rtemp] = t; --rtemp; ++ltemp; } if(ltemp == rtemp){ ltemp++; } if(left < rtemp){ quickSort(array, left, ltemp-1); } if(ltemp < right){ quickSort(array, rtemp+1, right); } } } //折半查找 static int searchFun(int a[],int n,int x){ int mid,low,high; low = 0; high = n-1; while(low <= high){ mid = (low+high)/2; if(a[mid] == x){ return mid; }else if(a[mid] > x){ high = mid -1; }else{ low = mid+1; } } return -1; } public static void main(String[] args) { int [] shuzu = new int[N]; int x,n,i; for(i=0;i<N;i++){ shuzu[i] = (int)(100+Math.random()*(100+1)); } for(i=0;i<N;i++){ System.out.print(" "+shuzu[i]); } System.out.println("输出排序的结果:"); quickSort(shuzu, 0, N-1); for(i=0;i<N;i++){ System.out.print(" "+shuzu[i]); } System.out.println(); System.out.println("输入要查找的数字"); Scanner input = new Scanner(System.in); x = input.nextInt(); n = searchFun(shuzu, N, x); System.out.println(n); if(n < 0){ System.out.println("没有找到"); }else{ System.out.println("数据:"+x+"位于数组中的第"+(n+1)+"个元素处。"); } }}
快速排序和折半查找
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。