-
快速排序
public static void main(String[] args) { Date dt=new Date(); int a[] = new int[15]; for (int i = 0; i < a.length; i++) { a[i] = (int) (Math.random() * 1000); } System.out.println(Arrays.toString(a)); quickSort(a,0,a.length-1); System.out.println(Arrays.toString(a)); System.out.println( ); } public static void quickSort(int[] a,int sta,int end) { int number = a[0]; //假设第一个是中间值 //定义交换坐标 int i = sta; int j = end; while (i < j) { while (i < j) { if (a[j] < a[i]) { a[i] = a[i] ^ a[j]; a[j] = a[i] ^ a[j]; a[i] = a[i] ^ a[j]; break; } else { j--; } } while (i < j) { if (a[i] > a[j]) { a[i] = a[i] ^ a[j]; a[j] = a[i] ^ a[j]; a[i] = a[i] ^ a[j]; break; } else { i++; } } } if (i - sta > 1) { quickSort(a,sta,i-1); } if (end - 1 - i > 1) { quickSort(a,i+1,end); } }
-
二分查找
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[] datas = new int[10000]; int number; for(number = 0; number < datas.length; ++number) { datas[number] = (int)(Math.random() * 10000.0D); } Arrays.sort(datas); System.out.println(Arrays.toString(datas)); System.out.print("请输入您要查询的值:"); number = scanner.nextInt(); int index = binaryQuery(datas, number); System.out.println(index); } public static int binaryQuery(int[] datas, int data) { return binaryQuery(datas, data, 0, datas.length - 1); } public static int binaryQuery(int[] datas, int data, int sta, int end) { int index = (end + sta) / 2; if (sta > end) { return -1; } else if (datas[index] == data) { return index; } else { return datas[index] > data ? binaryQuery(datas, data, sta, index - 1) : binaryQuery(datas, data, index + 1, end); } }
Day01
最新推荐文章于 2024-10-15 19:28:18 发布