问题:查找一组随机数中第一个值的中位数索引 知识点:while循环,if函数,数组排序 思路:生成一组随机数,把第一个值拿出来,从末位倒序开始比较,比第一个值大,end–,直到遇到比第一个值小的停下;再从begin的索引开始正序比较,比第一个值小,begin++,直到遇到比第一个值大的停下;交换begin和end位置的数。当begin和end相遇时,这个位置就是第一个值中位数的位置,输出。代码如下:
Random rand = new Random(); int[] arr = new int[20]; for (int i = 0; i <arr.length ; i++) { arr[i]=rand.nextInt(200)+1; System.out.print(arr[i]+" "); } int mid = arr[0]; int begin = 0,end = arr.length-1,t; while (begin<end){ if (arr[end]>=mid)end--; else if (arr[begin]<=mid)begin++; else { t=arr[begin]; arr[begin]=arr[end]; arr[end]=t; } } if (begin==end){ t=arr[begin]; arr[begin]=mid; arr[0]=t; } System.out.println(); for (int c : arr) { System.out.print(c+" "); } System.out.println(); System.out.println("中位数的索引是:"+begin);输出结果如下: 68 153 1 101 62 144 33 1 19 80 103 147 56 25 80 188 166 4 46 144 56 46 1 4 62 25 33 1 19 68 103 147 80 144 80 188 166 101 153 144 中位数的索引是:9 第一行是原随机数,第二行是把第一个值插入正确顺序后的数,可以看到索引是9。
