求教C語言資料結構題

時間 2021-06-05 02:06:32

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 .

C 語言有哪些復用資料結構的方法?

myd7349 我找到的一些資料 還有一些庫實現 甚至語言 ooc language,提供了乙個叫做 rock 的編譯器 2.就是前面回答的知友提到的用 void 型別的指標來實現泛型。這也有一些例子 nanomsg 實現的 list,queue 等資料結構 nanomsg src utils at...

《資料結構與演算法分析C語言描述》真的適合初學者嗎

看前言 本書適合作為高階資料結構 CS7 課程或是研究生第一年演算法分析課程的教材。學生應該具有中等程度的程式設計知識,包括像指標和遞迴這樣一些內容,還要具有離散數學的某些知識。 法布 初學者看這個會覺得很吃力,注意看一下這本書前言中的介紹 本書適合作為高階資料結構 CS7 課程或者研究生第一年演算...

資料結構和演算法先以C語言開始學習好還是按照自己學的語言開始

龍馬精神 看現在招聘,公司的要求。大致感覺是c python。學了c以後,很多底層的東西可以理解了,我覺得這樣對培養乙個計算機程式設計從業者的意識很重要。也許以後你用到高度封裝的產品,不需要你了解到底層。但我覺得,有了c的基礎,再去理解一些其他的語法現象會比較容易,畢竟c生萬物,很多東西說到底就是c...