算法的個(gè)人理解:
? ? ? ?實(shí)現(xiàn)思路是從數(shù)組中取出每一個(gè)元素,依次和數(shù)組中剩余的元素進(jìn)行比較,找出數(shù)組中最大或者最小的數(shù)放到數(shù)組的第一個(gè)位置,然后再在剩下的元素中找出第二大或者第二小的數(shù)放到數(shù)組中的第二個(gè)位置上,外層循環(huán)上總的比較次數(shù)是數(shù)組中元素個(gè)數(shù)少1,因?yàn)樗挥煤妥陨磉M(jìn)行比較,內(nèi)層循環(huán)從該數(shù)后一個(gè)數(shù)開(kāi)始比較,直到數(shù)組中最后一個(gè)元素為止,內(nèi)層循環(huán)每次結(jié)束之后就將找到的數(shù)和原來(lái)位置上的數(shù)進(jìn)行交換。
- (void)selectionSortWithMutableArray:(NSMutableArray *)mutableArray{
? ? ? ? for(inti =0; i < (mutableArray.count-1); i++) {//總的比較次數(shù)是數(shù)組元素個(gè)數(shù)減1,因?yàn)樽约翰挥煤妥约哼M(jìn)行一次比較,減掉的1就是這一次
? ? ? ? ? ? ? ? for(intj = (i +1); j < mutableArray.count; j++) {//和數(shù)組中除自己以外的每一個(gè)元素進(jìn)行比較,滿足條件(大于\小于)后和原來(lái)的位置進(jìn)行交換,第一次比較得出最大或者最小的數(shù),第二次比較得出第二大或者第二小的數(shù),第三次類推。。。
? ? ? ? ? ? ? ? ? //if (mutableArray[i] < mutableArray[j]) {//從大到小進(jìn)行排序
? ? ? ? ? ? ? ? ? ? ? ? ? //NSInteger temp = [mutableArray[i] integerValue];
? ? ? ? ? ? ? ? ? ? ? ? ?//mutableArray[i] = mutableArray[j];
? ? ? ? ? ? ? ? ? ? ? ? //mutableArray[j] = [NSNumber numberWithInteger:temp];
? ? ? ? ? ? ? ? ? //}
? ? ? ? ? ? ? ? ?if(mutableArray[i] > mutableArray[j]) {//從小到大排序
? ? ? ? ? ? ? ? ? ? ?NSIntegertemp = [mutableArray[i]integerValue];
? ? ? ? ? ? ? ? ? ? ?mutableArray[i] = mutableArray[j];
? ? ? ? ? ? ? ? ? ? ?mutableArray[j] = [NSNumbernumberWithInteger:temp];
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ?} ??
}