什么是雙重排序呢?排序的方法有很多種:冒泡、選擇……排序的次序也有順序和逆序。通過下面的例子我們一起來了解雙重排序吧。
考完試后,老師將全班同學的姓名和分數錄入了Excel表,接下來對所有成績進行升序或降序排列。當選中分數一列進行排序時Excel會彈出一個提示窗口,提示選定區域旁邊還有數據,是否需要“擴展選定區域”。如果不選中旁邊序列的話等同于只是將分數排序了,姓名沒有參加排序(姓名和原分數將會混淆),如果選擇擴展選定區域的話,姓名自動跟隨著分數一起排序,這就稱為雙重排序(圖1、圖2)。


兩種排序的結果,一種是只按照分數進行排序,另外一種是姓名跟隨著分數進行排序,這是我們需要的排序結果。今天我們用VB來制作一個雙重排序的小項目。
在學校的排球比賽上,每個班級按照積分制進行排序比賽,點擊添加按鈕錄入班級名稱和積分,點擊排序按鈕班級名隨著積分從低到高進行升序排列(排序的方法可以使用冒泡或選擇排序)。
首先創建兩個組合框(Combol),當班級和積分都輸入內容后,將組合框中的列表填充內容,否則不輸入任何內容,由于雙重排序需要調用兩個列表的內容,所以我們先要對班級和積分列表進行循環遍歷,將班級定義成a[i],將積分定義成b[i];由于是按照分數進行排序,班級名跟隨著積分排序,可以先按照分數進行冒泡排序,在排序的一行中添加對應班級名,班級名跟隨在積分排序后面,這樣的話當積分排序完成后,班級名的順序也就排好了。
雙重排序的難度不算大,但是需要注意排序時的順序問題,否則的話排序就會混亂。趕緊去試試看,看看能不能成功,再想想怎么在排序之后計算平均分(圖3)。
