什么是雙重排序呢?排序的方法有很多種:冒泡、選擇……排序的次序也有順序和逆序。通過下面的例子我們一起來了解雙重排序吧。
考完試后,老師將全班同學(xué)的姓名和分?jǐn)?shù)錄入了Excel表,接下來對所有成績進(jìn)行升序或降序排列。當(dāng)選中分?jǐn)?shù)一列進(jìn)行排序時Excel會彈出一個提示窗口,提示選定區(qū)域旁邊還有數(shù)據(jù),是否需要“擴(kuò)展選定區(qū)域”。如果不選中旁邊序列的話等同于只是將分?jǐn)?shù)排序了,姓名沒有參加排序(姓名和原分?jǐn)?shù)將會混淆),如果選擇擴(kuò)展選定區(qū)域的話,姓名自動跟隨著分?jǐn)?shù)一起排序,這就稱為雙重排序(圖1、圖2)。
兩種排序的結(jié)果,一種是只按照分?jǐn)?shù)進(jìn)行排序,另外一種是姓名跟隨著分?jǐn)?shù)進(jìn)行排序,這是我們需要的排序結(jié)果。今天我們用VB來制作一個雙重排序的小項目。
在學(xué)校的排球比賽上,每個班級按照積分制進(jìn)行排序比賽,點(diǎn)擊添加按鈕錄入班級名稱和積分,點(diǎn)擊排序按鈕班級名隨著積分從低到高進(jìn)行升序排列(排序的方法可以使用冒泡或選擇排序)。
首先創(chuàng)建兩個組合框(Combol),當(dāng)班級和積分都輸入內(nèi)容后,將組合框中的列表填充內(nèi)容,否則不輸入任何內(nèi)容,由于雙重排序需要調(diào)用兩個列表的內(nèi)容,所以我們先要對班級和積分列表進(jìn)行循環(huán)遍歷,將班級定義成a[i],將積分定義成b[i];由于是按照分?jǐn)?shù)進(jìn)行排序,班級名跟隨著積分排序,可以先按照分?jǐn)?shù)進(jìn)行冒泡排序,在排序的一行中添加對應(yīng)班級名,班級名跟隨在積分排序后面,這樣的話當(dāng)積分排序完成后,班級名的順序也就排好了。
雙重排序的難度不算大,但是需要注意排序時的順序問題,否則的話排序就會混亂。趕緊去試試看,看看能不能成功,再想想怎么在排序之后計算平均分(圖3)。