樹形選擇排序演算法

2021-07-23 07:08:41 字數 1012 閱讀 8974

樹形選擇排序有時也稱為錦標賽排序。排序過程中,按照錦標賽比賽規則進行,將所有n個資料看成一棵完全二叉樹的葉子結點,首先,完全二叉樹的葉子結點兩兩比較,勝出的兄弟進入樹的上一層繼續和兄弟進行比較,如果某個葉子結點沒有兄弟,則直接進入上一層,一直到二叉樹的第二層的兩個兄弟節點進行比較,勝出者為第一名。為了產生第二名,可將剛剛的到的第一名看成是最差的。再從此結點到根的路徑上依次和相應的兄弟結點進行比較,最終得到樹根,而得到第二民,依次下去,可得到第三名,第四名,......,最終得到最後的排名。

public static void main(string args);

// ******selectsort(a);

list list = new arraylist<>();

for(int i=0;ilist)else if(i ==1)

} treelist.add(nowlist);//將當前層的資料加入treelist當中

for(int j=0;j=nowlist.size())

object o2 = nowlist.get(j+1);

if(integer.parseint(o1.tostring()) > integer.parseint(o2.tostring()))else

}} return treelist;

}

/**

* 將乙個樹當中的最大值替換成最小值,繼續比較,找到其中的最大值

* @param treelist 需要替換的樹

*/public static void replacetreemax2min(listtreelist)else

}else}}

} system.out.println(treelist.tostring());

}

下面看執行的結果:

排序演算法之 選擇排序 二)樹形選擇排序

簡介 樹形排序也被稱為錦標賽排序 步驟 1 把n個物件的排序碼進行兩兩比較,得到n 2個排序的優勝者,作為第一步比較的結果留下來 2 然後對這n 2個物件再進行排序碼的兩兩比較,如此重複,直到選出乙個排序碼最小的物件為止。3 構建一顆包含n個結點的完全二叉樹,當二叉樹不滿 葉子結點個數為奇數 用關鍵...

Python 選擇排序中的樹形選擇排序

目錄 選擇排序裡面主要講了三個排序,分別是簡單選擇排序 樹形選擇排序 堆排序。今天這篇文章主要講樹形選擇排序,樹形選擇排序也被稱為錦標賽排序,樹形選擇排序運用了錦標賽的思想進行排序,樹形選擇排序是指首先對n個記錄的關鍵字進行兩兩比較,然後在n 2個較小者之間再進行兩兩比較,如此重複,直至選出最小的記...

演算法 選擇排序,例項分析選擇排序演算法

選擇排序,將乙個序列看做兩個部分,前面有序,後面無序,每次在後面的無序序列中,選擇乙個最小的元素,交換到前面有序序列的末尾,直到無序序列全部完成交換,即可完成排序 選擇排序是不穩定的排序演算法 有乙個序列 5,2,0,1,3,1,4 第一趟排序 第二趟排序 此時我們看到,經過兩趟排序,前面兩個元素 ...