一个数组 比如
int[] a = new int[4,5,6,7,1,2,3,4,5]。
   我如何能高效率的用程序算出 a[x] 在这个数组中排第几大比如a[0]= 4 第4大
    a[2]=6 第2大
麻烦各位大侠给点意见

解决方案 »

  1.   

    先定义一个变量int i=1;设a[x]第一大,循环数组,如果有比a[x]大的就让i++;
    最后就知道在数组中有几个比a[x]大,a[x]就是第i大.
      

  2.   

    如果只查一次,那么遍历一次int pos = 0;
    for (int i = 0; i < a.length; i++) {
      if (a[i] > x) {
        pos++;
      }
    }
    return pos + 1;
    如果这个数组一直要用,就先排序,后二分查找,排序偷懒直接用工具类了。 int[] a = new int[] {1, 2, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 5, 6, 7, 1,  2, 3, 4, 5 };
    int x = 6; // 要找的数
    int[] b = new int[a.length]; // 如果a不能变,用b,否则直接操作a就可以了
    System.arraycopy(a, 0, b, 0, a.length);
    Arrays.sort(b); // 以上为一次性的排序,以下为查找部分
    int pos = Arrays.binarySearch(b, x);
    System.out.println(pos);
    for (; b[pos + 1] == x; pos++) {
    // 如果数组可能重复的话
    }
    pos = b.length - pos;
    System.out.println(pos);上面是a不重复,如果重复的话