java 数组中的去重算法分析

来源:互联网 发布:淘宝充值平台加入不了 编辑:程序博客网 时间:2024/04/28 00:02

下面是我写的一个关于数组去重的问题,nodup()方法,当然还有其他的一些数组的操作方法,这个去重的基本思路是:从第一项开始,遍历之后的项,如果遇到和第一项相同的项,就从这个重复项开始,其后的每一项向前移动一个位置。这就有一个问题,就是如果重复项太多,那么移动的次数就太多,效率就会降低。如果大家有好的方法,欢迎讨论。

class HighArray{        private int [] a;        private int num;        public HighArray(int size){                a = new int [size];                num = 0;        }        //------------------------------------        public void find(int key){                int i ;                for(i = 0 ; i < num ; i++)                        if(a[i] == key)                                break;                if(i == num)                        System.out.println("can't find " + key);                else                        System.out.println("find " + key);        }        //-----------------------------------        public void insert(int value){                a[num] = value;                num++;        }        public void delMax(){                int max;                int i;                max = a[0];                for(i = 1 ; i < num ; i++)                        if(a[i] > max)                                max = a[i];                System.out.println("max " + max);                for(i=0; i < num ; i++)                        if(a[i] == max)                                break;                        for(int j = i ; j < num ; j++)                                a[j] = a[j+1];                        num--;  }        //-----------------------------------        public void noDup(){                int i;                int j=0;                for(i = 0 ; i < num ; i++)                        for(j = i + 1 ; j < num ; j++)                                if(a[j] == a[i]){                                        for(int k = j ; k < num ; k++)                                                {a[k] = a[k+1];}                                        num--;                                }        }        //-----------------------------------        public void  delete(int value){                int i;                for(i = 0 ; i < num ; i++)                        if(a[i] == value)                if(i != num){                        for(int j = i ; j < num ; j++)                                a[j] = a[j+1];                        num--;                }                else                        break;        }        //---------------------------------        public void display(){                for(int i = 0 ; i < num ; i++)                        System.out.print(a[i] + " ");                System.out.print("\n");}public  class HighArrayApp{        public static void main (String [] args){                HighArray ha = new HighArray(100);                for(int i = 0 ; i < 80 ; i++){int n = (int) (java.lang.Math.random()*79);ha.insert(n);}                ha.display();        //      ha.delMax();                    //      ha.find(26);        //      ha.delete(100);                ha.noDup();                ha.display();        }}


0 0
原创粉丝点击