<<大話數(shù)據(jù)結(jié)構(gòu)>>之淺談簡(jiǎn)單選擇排序

You have a dream, you got to protect it.

大話數(shù)據(jù)結(jié)構(gòu)修改版.png


簡(jiǎn)單選擇排序算法的簡(jiǎn)介、原理以及特點(diǎn)


選擇排序(Selection sort)是一種簡(jiǎn)單直觀的排序算法。它的工作原理是每一次從待排序的數(shù)據(jù)元素中選出最小(或最大)的一個(gè)元素,存放在序列的起始位置,直到全部待排序的數(shù)據(jù)元素排完。 選擇排序是不穩(wěn)定的排序方法(比如序列[5, 5, 3]第一次就將第一個(gè)[5]與[3]交換,導(dǎo)致第一個(gè)5挪動(dòng)到第二個(gè)5后面)。


簡(jiǎn)單選擇排序代碼實(shí)現(xiàn)


簡(jiǎn)單選擇排序的代碼實(shí)現(xiàn)的思路(從小到大排序方式):每次從左至右掃描序列,記下最小值的位置。然后直接放到本次的遍歷的首位.這里有個(gè)關(guān)鍵字是本次的遍歷!!!可能用語(yǔ)言表達(dá)起來(lái)比較抽象,那么 我們直接上OC代碼.

    
    self.runNumber = 0;

    self.dataArray = [NSMutableArray arrayWithArray:@[@5,@9,@10,@7,@8,@20,@6,@0]];
    
    for (int i = 0; i< self.dataArray.count; i++) {
        
        self .minIdexPath = i;
        
        //這一層for循環(huán)是尋找到本次遍歷的最小元素的位置
        for (int j = i +1 ; j <self.dataArray.count; j++) {
            
            if (self.dataArray[self.minIdexPath] >self.dataArray[j]) {
                
                self.minIdexPath = j;
                
                
            }
        

        }
        
        //把最小元素與本次遍歷的首位元素作位置的交換
        if (self.minIdexPath != i) {
            
            self.runNumber++;

            NSNumber *number = self.dataArray[i];
            
            self.dataArray[i] = self.dataArray[self.minIdexPath];
            
            self.dataArray[self.minIdexPath] = number;
            
        }
        
        
    }
    
    NSLog(@"簡(jiǎn)單選擇排序: \n %@ \n 交換次數(shù):%ld",self.dataArray,self.runNumber);

簡(jiǎn)單選擇排序的部分過(guò)程


簡(jiǎn)單選擇排序的特點(diǎn)分析


當(dāng)我們執(zhí)行上面的代碼的時(shí)候,在控制臺(tái)打印出如下的信息,交換次數(shù)只有4次!,從其過(guò)程中來(lái)看,簡(jiǎn)單選擇排序最大的特點(diǎn)就是交換移動(dòng)數(shù)據(jù)次數(shù)相對(duì)少,這樣也相對(duì)節(jié)約了時(shí)間.整體上來(lái)說(shuō),簡(jiǎn)單選擇排序在性能上還是要略優(yōu)于冒泡排序的.

數(shù)組中的元素交換次數(shù)
簡(jiǎn)單選擇排序是一種較為簡(jiǎn)單的排序方式,比較容易理解,這篇文章就寫到這,如果您有什么問(wèn)題,可以在評(píng)論區(qū)提出來(lái),我會(huì)及時(shí)回復(fù)您,下面附上簡(jiǎn)單選擇排序的Demo.
----> 簡(jiǎn)單選擇排序Demo ??
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容