《Java数据结构和算法(第二版)》中编程作业2.6

2.6 向highArray.java程序(清单2.3)的HighArray类中加入一个noDup()的方法,使之可以将数组中的所有重复数据项删除.即如果数组中有三个数据项的关键字为17, noDup()方法将会删除其中的两个.不必考虑保持数据项的顺序.一种方法是先用每一个数据项比较,并用null(或是一个不会用在真正的关键字中的特殊值)将重复的数据项覆盖掉。然后将所有的null删除,当然还要缩小数组的大小。

  public void noDup() { int i,j,count = 0; for (i = 0; i < nElems; i++) { for (j = i + 1; j < nElems; j++) { if (a[j] != -1 && a[i] == a[j]) { a[j] = -1; count++; } } } long[] arr = new long[nElems - count]; for (i = 0, j = 0; i < nElems; i++) { if (a[i] != -1) { arr[j++] = a[i]; } } a = arr; nElems -= count; }

你可能感兴趣的:(java,数据结构,编程,算法,作业)