1. 程式人生 > >選擇排序之樹形選擇排序(TreeSelectionSort)

選擇排序之樹形選擇排序(TreeSelectionSort)

一、簡單選擇排序思想

這裡寫圖片描述
很顯然,每次我們比較後就把資料進行交換,取出了關鍵字最小的記錄,但是對於與最小關鍵字記錄交換的資料我們直接扔進了亂序中,沒有利用這次比較。導致每次選擇都要重新比較。
這裡寫圖片描述

二、樹形選擇排序

為了減少簡單選擇排序,我們利用前n-1次比較資訊,減少下次選擇。類似於錦標賽。根據錦標賽傳遞關係。亞軍只能從被冠軍擊敗的人中選出。
這裡寫圖片描述
實際演算法中,我們把需要比較的記錄全部作為葉子,然後從葉子開始兩兩比較,從底向上最後形成一棵完全二叉樹。在我們選擇出最小關鍵字後,根據關係的傳遞,只需要將最小關鍵字的葉子節點改成無窮大,重新從底到上比較一次就能夠得出次小關鍵字。
這裡寫圖片描述
然而雖然樹形選擇比較能夠減少比較次數,卻增加了輔助空間的使用。為了彌補此缺憾,威廉姆斯於1964年提出了堆排序