1 算法穩(wěn)定性
假定在待排序的記錄序列中茁肠,存在多個(gè)具有相同的關(guān)鍵字的記錄;
若經(jīng)過排序患民,這些記錄的相對(duì)次序保持不變;
即在原序列中,ri=rj垦梆,且ri在rj之前匹颤,而在排序后的序列中仅孩,ri仍在rj之前,則稱這種排序算法是穩(wěn)定的印蓖;
否則稱為不穩(wěn)定的辽慕。
算法穩(wěn)定性的意義
- 如果只是簡(jiǎn)單的進(jìn)行數(shù)字的排序,那么穩(wěn)定性將毫無意義赦肃。
- 如果排序的內(nèi)容僅僅是一個(gè)復(fù)雜對(duì)象的某一個(gè)數(shù)字屬性溅蛉,那么穩(wěn)定性依舊將毫無意義(所謂的交換操作的開銷已經(jīng)算在算法的開銷內(nèi)了,如果嫌棄這種開銷他宛,不如換算法好了船侧?)
- 如果要排序的內(nèi)容是一個(gè)復(fù)雜對(duì)象的多個(gè)數(shù)字屬性,但是其原本的初始順序毫無意義厅各,那么穩(wěn)定性依舊將毫無意義镜撩。
- 除非要排序的內(nèi)容是一個(gè)復(fù)雜對(duì)象的多個(gè)數(shù)字屬性,且其原本的初始順序存在意義队塘,那么我們需要在二次排序的基礎(chǔ)上保持原有排序的意義袁梗,才需要使用到穩(wěn)定性的算法。
例如:
??要排序的內(nèi)容是一組原本按照價(jià)格高低排序的對(duì)象人灼,如今需要按照銷量高低排序围段,使用穩(wěn)定性算法顾翼,可以使得想同銷量的對(duì)象依舊保持著價(jià)格高低的排序展現(xiàn)投放,只有銷量不同的才會(huì)重新排序。(當(dāng)然适贸,如果需求不需要保持初始的排序意義灸芳,那么使用穩(wěn)定性算法依舊將毫無意義)。