可以使用雙重迴圈,逐一對比元素,如有重複,則刪除的方法去重。其思路為1、依次遍歷迴圈中的每一個元素。2、對於任意一個元素,依次與之前的元素進行對比,如果有重複則刪除。3、刪除操作可以採用將後續元素逐個前移,達到覆蓋當前元素的效果。在此基礎上可以進行一點最佳化,即,不需要每次刪除元素均前移所有元素,而是把需要保留的元素放到"應該"放的位置即可,這樣可以提高效率。以整型陣列為例,參考程式碼如下:1234567891011121314int remove_repeat(int *a, int l)//對起始地址為a,長度為l的陣列進行去重,新的長度以返回值形式返回。{ int i,j, r=0; //i,j為迴圈下標,r為去重後元素總數,初始值為0 for(i = 0; i < l; i ++) { for(j = 0; j < r; j ++)//檢查是否重複 if(a[j] == a[i]) break; if(j == r) //沒有重複元素 a[r++] = a[i]; //將當前元素放置與去重後陣列的尾部,並增加去重後的總數。 } return r; //返回新的長度。}
可以使用雙重迴圈,逐一對比元素,如有重複,則刪除的方法去重。其思路為1、依次遍歷迴圈中的每一個元素。2、對於任意一個元素,依次與之前的元素進行對比,如果有重複則刪除。3、刪除操作可以採用將後續元素逐個前移,達到覆蓋當前元素的效果。在此基礎上可以進行一點最佳化,即,不需要每次刪除元素均前移所有元素,而是把需要保留的元素放到"應該"放的位置即可,這樣可以提高效率。以整型陣列為例,參考程式碼如下:1234567891011121314int remove_repeat(int *a, int l)//對起始地址為a,長度為l的陣列進行去重,新的長度以返回值形式返回。{ int i,j, r=0; //i,j為迴圈下標,r為去重後元素總數,初始值為0 for(i = 0; i < l; i ++) { for(j = 0; j < r; j ++)//檢查是否重複 if(a[j] == a[i]) break; if(j == r) //沒有重複元素 a[r++] = a[i]; //將當前元素放置與去重後陣列的尾部,並增加去重後的總數。 } return r; //返回新的長度。}