1樓:0x76
比如int
removeDuplicates
(int
*array
,int
array_size
)else
current
=array[i
];}return
array_size;}
函式返回新的陣列長度,可見複雜度並不是
如果陣列元素資料範圍較小,可以使用計數陣列。比如,假設 0 <= array[i] <= 100 ,那麼可以這麼寫
intget_min_in_array
(int
*array
,int
array_size
)int
removeDuplicates_1
(int
*array
,int
array_size);
for(i=
0;i ++)count_array [array[i ]-min]++; for(i= 0;i<101;i++ )if(count_array[i ])array[j ++]=i +min ;returnj; }因為計數陣列長度可以固定,所以空間複雜度為 ,找最小值的時間複雜度為 ,計數時間複雜度為 ,重新輸出複雜度為 ,所以總時間複雜度為 . 或者使用雜湊表 defremoveDuplicates (array :list )->list :return list (set (array ))查詢時間複雜度為 ,遍歷一輪時間複雜度為 ,所以總時間複雜度為 ,但空間複雜度就難說了. 真符合要求的做法 使用快慢指標 intremoveDuplicates_2 (int *array ,int array_size )其中 i 是慢指標,j 是快指標。 j 飛快地掃過重複的元素,一旦碰到了新元素,則複製到 array[i + 1] 上,並且 i 指標向後跳一步。這裡的 array[i] 即相當於上面第乙個做法中的 current . myd7349 我找到的一些資料 還有一些庫實現 甚至語言 ooc language,提供了乙個叫做 rock 的編譯器 2.就是前面回答的知友提到的用 void 型別的指標來實現泛型。這也有一些例子 nanomsg 實現的 list,queue 等資料結構 nanomsg src utils at... 看前言 本書適合作為高階資料結構 CS7 課程或是研究生第一年演算法分析課程的教材。學生應該具有中等程度的程式設計知識,包括像指標和遞迴這樣一些內容,還要具有離散數學的某些知識。 法布 初學者看這個會覺得很吃力,注意看一下這本書前言中的介紹 本書適合作為高階資料結構 CS7 課程或者研究生第一年演算... 龍馬精神 看現在招聘,公司的要求。大致感覺是c python。學了c以後,很多底層的東西可以理解了,我覺得這樣對培養乙個計算機程式設計從業者的意識很重要。也許以後你用到高度封裝的產品,不需要你了解到底層。但我覺得,有了c的基礎,再去理解一些其他的語法現象會比較容易,畢竟c生萬物,很多東西說到底就是c...C 語言有哪些復用資料結構的方法?
《資料結構與演算法分析C語言描述》真的適合初學者嗎
資料結構和演算法先以C語言開始學習好還是按照自己學的語言開始