順序表刪除重復值的高效算法。


需求:編寫算法,實現刪除當前順序表中所有值為X的元素,並使此操作的時間復雜度為O(n),其中n為線性表的長度。

 

分析: 1,從順序表的表頭依次掃描,遇到值為X的數據元素就將其刪掉,直到掃描最后一個元素。

       順序表刪除一個元素時間復雜度為O(n),要對n個元素處理,所以時間復雜度為O(n^2),不符合題意。

          2,先設計一個計數變量k,用來記錄不等於X的值得個數,初始值為0,一邊掃描的時候一邊統計,當統計到K個不

          等於X的值的數時,將其放到第K個存放位置,最后修改長度為K。

 1 //刪除順序表重復元素
 2     public void del_x(Object x) {
 3         int k=0;
 4         for(int i=0;i<curLen;i++){
 5             if(!listElem[i].equals(x)){
 6                 listElem[k++]=listElem[i];
 7             }
 8         }
 9         curLen=k;
10     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM