国产探花免费观看_亚洲丰满少妇自慰呻吟_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 可見,這種方法也無法實現完全去重。

特此標記,以免再犯。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呼玛县| 论坛| 五指山市| 江山市| 清苑县| 丰县| 水城县| 德钦县| 乌鲁木齐市| 株洲市| 淳化县| 大足县| 鹤壁市| 宁海县| 深泽县| 康定县| 昔阳县| 华蓥市| 友谊县| 石家庄市| 资溪县| 德兴市| 横峰县| 新丰县| 湟中县| 开原市| 绍兴县| 夏邑县| 怀集县| 璧山县| 子长县| 元阳县| 通江县| 蒙城县| 松滋市| 依兰县| 富平县| 郎溪县| 太康县| 武隆县| 石屏县|