四種去重方法耗時比較

2021-10-10 19:26:42 字數 2421 閱讀 3169

總結一下四種去除重複元素的方法,由於有的方法在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的元素 如果出現元素重複,那麼視為...