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.