原地 原址 就地 排序和穩定排序

2021-08-22 01:14:29 字數 363 閱讀 2361

不了解這2個概念的同學可能會認為他倆之間有著某種一絲絲的聯絡,畢竟哲學上講過萬物都是聯絡的,但是我要說的是他們從科學概念上出發毫無聯絡。

上一講就講過穩定排序,是指在排序演算法中,相同值的兩個元素,在輸入陣列中先出現的數在輸出陣列中也先出現。像氣泡排序,插入排序,基數排序,歸併排序等都是穩定排序。

原地(原址、就地)排序是指:基本上不需要額外輔助的的空間,允許少量額外的輔助變數進行的排序。就是在原來的排序陣列中比較和交換的排序。像選擇排序,插入排序,希爾排序,快速排序,堆排序等都會有一項比較且交換操作(swap(i,j))的邏輯在其中,因此他們都是屬於原地(原址、就地)排序,而合併排序,計數排序,基數排序等不是原地排序。

出於倆概念混亂的目的,在此書之,以免忘記。

穩定排序和非穩定排序

首先,排序演算法的穩定性大家應該都知道,通俗地講就是能保證排序前2個相等的數其在序列的前後位置順序和排序後它們兩個的前後位置順序相同。在簡單形式化一下,如果ai aj,ai原來在位置前,排序後ai還是要在aj位置前。其次,說一下穩定性的好處。排序演算法如果是穩定的,那麼從乙個鍵上排序,然後再從另乙個...

排序 穩定排序和不穩定排序

這幾天筆試了好幾次了,連續碰到乙個關於常見排序演算法穩定性判別的問題,往往還是多選,對於我以及和我一樣拿不準的同學可不是乙個能輕易下結論的題目,當然如果你筆試之前已經記住了資料結構書上哪些是穩定的,哪些不是穩定的,做起來應該可以輕鬆搞定。本文是針對老是記不住這個或者想真正明白到底為什麼是穩定或者不穩...

穩定排序和不穩定排序

這幾天筆試了好幾 次了,連續碰到乙個關於常見排序演算法穩定性判別的問題,往往還是多選,對於我以及和我一樣拿不準的同學可不是乙個能輕易下結論的題目,當然如果你筆試之前 已經記住了資料結構書上哪些是穩定的,哪些不是穩定的,做起來應該可以輕鬆搞定。本文是針對老是記不住這個或者想真正明白到底為什麼是穩定或者...