總結一下四種去除重複元素的方法,由於有的方法在pta上執行超時,所以在這裡對這四種方法執行耗時做乙個比較。(我認為第四種方法放在實際的題目裡面應該是執行時間最短的,因為只有這個方法在pta上沒有執行超時)
#include
#include
#include
#define n 10000
intmain
(void);
clock_t str,end;
//以產生的隨機數作為去重物件,先產生隨機數並初始化二維陣列
srand((
unsigned
int)
time
(null))
;for
(i=0
;i)//初始化a[0],a[0]作為第一種方法的物件以此類推
a[0]
[n]=
'\0'
;for
(i=1
;i<=
3;i++
)//初始化a[1]、a[2]、a[3]
//第一種方法:陣列元素逐一向後比較,若發現相同元素,自相同元素截止,由其後一位元素逐一向前覆蓋
str=
clock()
;for
(i=0
;i-1
;i++
)else
j++;}
} end=
clock()
;printf
("第一種方法去重後:\n");
for(i=
0;i;i++
)printf
("%c"
,a[0
][i]);
printf
("\n第一種方法耗時:%fs\n\n",(
double
)(end-str)
/clocks_per_sec)
;//第二種方法:將陣列排序後,自第乙個元素開始,逐一與後一位元素比較,若相同,逐一向前覆蓋
//先排序
str=
clock()
;char temp;
for(i=
0;i;i++)}
}//for(i=
0;i-1;)
else
i++;}
end=
clock()
;printf
("第二種方法去重後:\n");
for(i=
0;i;i++
)printf
("%c"
,a[1
][i]);
printf
("\n第二種方法耗時:%fs\n\n",(
double
)(end-str)
/clocks_per_sec)
;/*第三種方法:建立乙個陣列儲存去重後的元素,用該陣列
的每一位元素與待去重陣列某元素比較,如果全部不相同,將」某元素」存入該陣列
*/str=
clock()
;int d,k=
1,b[n]
; b[0]
=a[2][
0];for
(i=0
;i;i++)if
(d)}
end=
clock()
;printf
("第三種方法去重後:\n");
for(i=
0;i)printf
("%c"
,b[i]);
printf
("\n第三種方法耗時:%fs\n\n",(
double
)(end-str)
/clocks_per_sec)
; k=0;
/*第四種方法:while((ch=getchar())!='\n'),在這裡以for迴圈代替輸入
輸入乙個元素儲存乙個元素,如果該元素與之前
輸入的元素都不相同,將其儲存到儲存去重後
元素的陣列中。
*/str=
clock()
;char c[n]
,d[n]
;int k=0;
for(i=
0;i(d)}
end=
clock()
;printf
("第四種方法去重後:\n");
for(i=
0;i)printf
("%c"
,d[i]);
printf
("\n第四種方法耗時:%fs\n",(
double
)(end-str)
/clocks_per_sec)
;}
輸出結果如下:
陣列去重的四種方法
思路 定義乙個新陣列,並存放原陣列的第乙個元素,然後將元素組一一和新陣列的元素對比,若不同則存放在新陣列中。function unique arr if repeat return res 思路 先將原陣列排序,在與相鄰的進行比較,如果不同則存入新陣列 function unique arr ret...
陣列去重的四種方法
1 利用 es6 set去重 function unique arr var arr 1 1,true true true true,15 15,false false undefined,undefined,null null nan nan nan 0 0,a a console.log uni...
陣列去重 資料去重的四種方法
第一種 利用hash的原理去重即排序 var arr 1,1,1,2,2,2,55,5,4,4,88 var brr 去重複,利用相同下標的多次賦值以最新的為準 for var i 0 i brr arr i arr i 這個命令主要是去重 因為brr的下標會arr的元素 如果出現元素重複,那麼視為...