簡體   English   中英

穩定和就地相同嗎?

[英]Is stable and in-place the same?

在談論算法時。 我看到了就地和穩定排序算法的描述。 是說算法是穩定的,就像說它的原位一樣? 如果不是有什么區別?

沒有,

穩定算法意味着在執行算法后,“相等”元素的相對排序應保持相同。

例如,如果你有一個數組

{-2, 4, 5, -11, 9, -10} 

並且你想對它進行排序,使所有負面元素都出現在正元素之前。 並且您希望-ve和+ ve元素的相對排序保持不變

{-2, -11, -10, 4, 5, 9} 

這是穩定算法的輸出

如評論中所述,就地算法意味着算法不需要輸入數據以外的額外空間。 輸出是數據占用內存中由輸入數據占用的相同位置,並且輸入數據被破壞。

穩定意味着輸入元素的順序不變,除非需要進行更改以滿足要求。 應用於一系列相等元素的穩定排序不會改變它們的順序。

就地意味着輸入和輸出占用相同的內存存儲空間。 沒有輸入到輸出的復制,除非您制作了備份副本,否則輸入將不再存在。 這是一種通常需要命令式語言來表達的屬性,因為純函數式語言沒有存儲空間或覆蓋數據的概念。

不,這不一樣。

穩定排序是指對於比較相等的元素,它們在排序輸出中的相對位置保證與源中的相對位置相同。 將此與不穩定排序進行對比,其中比較相等的項目將以不可預測的順序出現在排序結果中。 這種區別在簡單的情況下並不重要(例如排序整數),但是當排序標准只是每個項目所包含的數據的一部分時(例如,僅按大小排序彩色襪子),這一點很重要。

就地排序是在不需要額外空間的情況下對輸入進行排序的排序 ; 它也被稱為“破壞性”排序,因為在排序之后,您丟失了未排序的輸入數據形式(它已被排序數據替換)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM