2014-01-27 244 views
0

我想從數組中刪除一個元素。我有一個從1到9的整數的數組。我的算法搜索整行,如果行中的數字匹配數組中的數字,它刪除數組中的數字。什麼是最有效的算法來做到這一點?我正在考慮一個鏈表,因爲我可以簡單地縮短列表,但它可能會在以後引起混淆,並且可能不如數組。從數組中刪除一個元素

+0

你問最高效的算法或容器?他們是兩件不同的事情。 – chris

+3

使用'std :: vector'除非你有理由不這樣做。在大多數情況下,'std :: vector'的性能優於'std :: list'的性能。 – olevegard

+0

不能從'int'數組中刪除元素。他們有固定的大小,所以他們總是包含相同數量的元素。 – juanchopanza

回答

1

最有效的方法是使用另一個容器容器空白/完整陣列中每個插槽的標誌。否則,每個元素都必須上移一個插槽。

0

這裏有許多變量的簡單方法可以給出一個很好的答案。

根據您的描述,您有2個數據結構,每個數據結構都有一個值列表,並且您想要從第一個結構中刪除第二個結構中的所有值。第二種結構是什麼樣的結構?你有控制權嗎?它是可以像set或unordered_set一樣輕鬆快速地搜索的東西嗎?還是它必須被迭代才能找到像鏈接列表這樣的值?您要刪除的數據結構是否需要按升序保存?

理想情況下,其中一個容器將不得不從頭到尾迭代,而另一個容器將快速搜索。您希望您要刪除的容器具有快速刪除時間。如果數組需要按順序保存,那麼從數組中刪除是一個耗時的過程,它需要A:將刪除點的每個元素向前移動一個,然後跟蹤數組的實際長度或B:複製數組的內容添加到缺少該元素的新數組中。真的,這裏沒有足夠的信息來給你一個關於什麼算法或容器最適合你的任務的好答案。