国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

整數數組去重

2019-11-08 01:43:34
字體:
來源:轉載
供稿:網友

今天看到一道題,是關于整數數組的去重和排序。 碰到去重也沒有多想,就直接遍歷數組然后判斷,如果重復,則把后面的數字前移 代碼如下:

for(i=0;i<N;i++) for(j=i+1;j<N;j++) if(a[i]==a[j]) { for(k=j;k<N-1;k++) a[k]=a[k+1]; N--; }

乍一看好像還很有道理很簡潔有沒有,但是如果我輸入10個數: 3 3 3 3 1 1 1 1 1 1 并經過排序后, 結果卻為: 1 1 3 3 為什么呢? 1、 i=0 1) j =1時 數組變為 3 3 3 1 1 1 1 1 1 2) j=2時 數組變為3 3 1 1 1 1 1 3) j=3時 a[i]!=a[j] 2、 i=1 a[i]!=a[j] 發現問題了嗎?對于這種情況,這種方法無法實現完全去重。

另外,我在其他人寫的代碼中還發現了另一種錯誤方法: 遍歷數組,如果重復,則令:a[j]=a[N-1]; N–;

for(i=0;i<N;i++) for(j=i+1;j<N;j++) if(a[i]==a[j]) { a[j]=a[N-1]; N--; }

乍一看也很簡單是不是? 然而運行時也出現了問題: 輸入10個數:3 3 3 3 1 1 1 1 1 1 并排序后, 結果為: 1 1 3 為什么呢? 對3成功去重后,數組為 3 1 1 1 1 1 1 1、 i=1 1) j =2時 數組變為 3 1 1 1 1 1 2) j=3時 數組變為3 1 1 1 1 3) j=4時 數組變為3 1 1 1 2、 i=2 3) j=3時 數組變為3 1 1 可見,這種方法也無法實現完全去重。

特此標記,以免再犯。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涡阳县| 桑植县| 金溪县| 石渠县| 平湖市| 邢台县| 广灵县| 察雅县| 兴海县| 普安县| 扎囊县| 肇东市| 西林县| 紫阳县| 尖扎县| 清河县| 香港 | 嵊泗县| 台东市| 昌乐县| 浏阳市| 彰化市| 涿州市| 荃湾区| 廊坊市| 宝坻区| 正镶白旗| 兴化市| 六盘水市| 桂东县| 沙河市| 宁夏| 邯郸县| 揭西县| 德化县| 青田县| 通化市| 安庆市| 虎林市| 永吉县| 正宁县|