- 秒懂算法:用常識解讀數據結構與算法
- (美)杰伊·溫格羅
- 511字
- 2022-10-08 17:10:05
1.7 刪除
刪除指的是刪去特定索引的值的過程。
下面以刪除購物清單數組索引2處的值為例。在這個數組中,這個值是"cucumbers"
。
第1步:從數組中刪除"cucumbers"
,如下圖所示。

嚴格意義上來說,刪除"cucumbers"
只需1步。但有一個問題:數組中間有了一個空格子。中間有空格子的數組是無效的。要解決這個問題,需要把"dates"
和"elderberries"
左移。因此刪除操作還需要額外步驟。
第2步:左移"dates"
,如下圖所示。

第3步:左移"elderberries"
,如下圖所示。

結果,這個刪除操作用了3步。1步是刪除元素,另外2步是移動元素來填補空格子。
和插入一樣,刪除元素的最壞情況是刪除數組中的第一個元素。因為索引0會變成空格子,所以必須把剩余的所有元素都左移。
對有5個元素的數組來說,刪除第一個元素需要1步,移動4個剩余的元素需要4步。對有500個元素的數組來說,刪除第一個元素需要1步,移動剩余的元素需要499步。因此,對于有N個元素的數組,刪除操作最多需要N步。
恭喜!你已經分析完第一個數據結構的時間復雜度。你已經學會了如何分析數據結構的效率,之后你會發現,不同數據結構的效率也不同。這一點很關鍵,因為為代碼選擇正確的數據結構直接決定了軟件性能。
接下來要介紹集合,乍一看它和數組很相似。不過,你會發現同樣的操作在數組和集合中有著不同的效率。
推薦閱讀
- The Complete Rust Programming Reference Guide
- Debian 7:System Administration Best Practices
- C語言程序設計基礎與實驗指導
- Learning Python Design Patterns(Second Edition)
- PHP+MySQL+Dreamweaver動態網站開發實例教程
- 實戰Java高并發程序設計(第3版)
- 精通Python設計模式(第2版)
- 微信小程序開發與實戰(微課版)
- C#程序設計教程(第3版)
- Java SE實踐教程
- JBoss:Developer's Guide
- Distributed Computing in Java 9
- Python預測分析與機器學習
- 數據結構:Python語言描述
- Java程序設計