oc 排序(冒泡 選擇 插入 希爾……)

- (void)viewDidLoad {

[superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

//冒泡

//[self storyBuddleByAray:[self creatStoryAryAndStart:0 andEnd:60000 andLength:50000] andDes:0];

//選擇

//[self selectStroyByArray:[self creatStoryAryAndStart:0 andEnd:1000000 andLength:100000] andDes:0];

//插入排序

[selfinsterStoryByArray:[selfcreatStoryAryAndStart:0andEnd:1000000andLength:100000]andDesc:0];

//希爾排序

[selfhillStoryArray:[selfcreatStoryAryAndStart:0andEnd:1000000andLength:100000]andSetp:6andDesc:0];

}

//選擇排序

- (void)selectStroyByArray:(NSMutableArray*)array andDes:(int)desc

{

if(array ==nil|| array.count==0)return;

NSLog(@"選擇");

[selfprintCurrectTimeAndStartOrEndtimer:0];

for(inti =0; i < array.count; i++) {

intcurrectIndex = i;

for(intj = i +1; j < array.count; j++)

{

if([array[j]compare:array[currectIndex]] ==NSOrderedDescending)

{

[arrayexchangeObjectAtIndex:jwithObjectAtIndex:currectIndex];

}

}

}

[selfprintCurrectTimeAndStartOrEndtimer:1];

}

//冒泡排序

- (void)storyBuddleByAray:(NSMutableArray*)array andDes:(int)desc

{

if(array.count==0|| array ==nil)return;

[selfprintCurrectTimeAndStartOrEndtimer:0];

for(inti =1; i< array.count; i++)

{

for(intj =0; j < array.count- i ; j++)

{

if([array[j]compare:array[j+1]] ==NSOrderedAscending)

{

[arrayexchangeObjectAtIndex:j+1withObjectAtIndex:j];

}

}

}

[selfprintCurrectTimeAndStartOrEndtimer:1];

[selfprintStoryArray:arrayandFixIndex:0];

}

//插入排序

- (void)insterStoryByArray:(NSMutableArray*)array andDesc:(int)NSSortDescriptor

{

if(array.count==0|| array ==nil)return;

NSLog(@"插入排序開(kāi)始");

NSDate*startDate = [NSDatedate];

for(inti =0; i < array.count; i++)

{

for(intj = i ; j >0; j--)

{

NSString*fixStr = [NSStringstringWithFormat:@"%@",array[j]];

NSString*pixStr = [NSStringstringWithFormat:@"%@",array[j-1]];

if(fixStr.integerValue<= pixStr.integerValue)break;//判斷當(dāng)前結(jié)束的條件

elseif(fixStr.integerValue> pixStr.integerValue)

{

[arrayexchangeObjectAtIndex:jwithObjectAtIndex:(j-1)];

}

}

}

NSDate*endDate = [NSDatedate];

[selfjudeTimeScendByStartTime:startDateandEndTime:endDate];

}

//希爾排序

- (void)hillStoryArray:(NSMutableArray*)list andSetp:(int)currectSetp andDesc:(int)desc

{

if(0== list.count||nil== list)return;

NSLog(@"希爾排序");

NSDate*date=[NSDatedate];

intgap = (int)[listcount] / currectSetp;

while(gap >=1) {

for(inti = gap ; i < [listcount]; i++){

NSIntegertemp = [[listobjectAtIndex:i]intValue];

intj = i;

while(j >= gap && temp < [[listobjectAtIndex:(j - gap)]intValue]) {

//替換而不是互換值

[listreplaceObjectAtIndex:jwithObject:[listobjectAtIndex:j-gap]];

j -= gap;

}

//替換而不是互換值

[listreplaceObjectAtIndex:jwithObject:@(temp)];

}

gap = gap / currectSetp;

}

NSDate*endDate = [NSDatedate];

[selfjudeTimeScendByStartTime:dateandEndTime:endDate];

}

/**

生成數(shù)組

@param startInt開(kāi)始位置

@param endInt結(jié)束位置

@param aryCount長(zhǎng)度

@return返回?cái)?shù)組

*/

- (NSMutableArray*)creatStoryAryAndStart:(int)startInt andEnd:(int)endInt andLength:(int)aryCount

{

NSMutableArray*array = [NSMutableArrayarrayWithCapacity:0];

for(inti =0; i < aryCount; i++)

{

intindex =arc4random() % (endInt - startInt +1) + startInt;

NSString*objectStr = [NSStringstringWithFormat:@"%d",index];

[arrayaddObject:objectStr];

}

returnarray;

}

- (void)printCurrectTimeAndStartOrEndtimer:(int)str

{

NSDate*date=[NSDatedate];//獲取當(dāng)前時(shí)間

NSDateFormatter*format1=[[NSDateFormatteralloc]init];

[format1setDateFormat:@"yyyy/MM/dd HH:mm:ss"];

NSString*str1=[format1stringFromDate:date];

NSString*fixStr = str ?@"結(jié)束":@"開(kāi)始";

NSLog(@"-%@時(shí)間-%@-----",fixStr,str1);

}

- (void)judeTimeScendByStartTime:(NSDate*)startDate andEndTime:(NSDate*)endDate

{

UInt64msecond1 = [startDatetimeIntervalSince1970];

UInt64msecond2 = [endDatetimeIntervalSince1970];

NSLog(@"%llu", msecond1 - msecond2);

}

- (void)printStoryArray:(NSMutableArray*)array andFixIndex:(int)fixInt

{

NSString*fixStr = fixInt ==0?@"排序完成":@"排序中";

NSString*compStr = [arraycomponentsJoinedByString:@" "];

NSLog(@"%@ : %@",fixStr,compStr);

}

- (void)didReceiveMemoryWarning {

[superdidReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子融击,更是在濱河造成了極大的恐慌篮灼,老刑警劉巖犁河,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闽铐,死亡現(xiàn)場(chǎng)離奇詭異琳猫,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)勃教,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)淤击,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人故源,你說(shuō)我怎么就攤上這事污抬。” “怎么了绳军?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵印机,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我门驾,道長(zhǎng)射赛,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任奶是,我火速辦了婚禮楣责,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘聂沙。我一直安慰自己秆麸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布及汉。 她就那樣靜靜地躺著沮趣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坷随。 梳的紋絲不亂的頭發(fā)上房铭,一...
    開(kāi)封第一講書(shū)人閱讀 52,584評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音甸箱,去河邊找鬼育叁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛芍殖,可吹牛的內(nèi)容都是我干的豪嗽。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼豌骏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼龟梦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起窃躲,我...
    開(kāi)封第一講書(shū)人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤计贰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后蒂窒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體躁倒,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荞怒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秧秉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褐桌。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖象迎,靈堂內(nèi)的尸體忽然破棺而出荧嵌,到底是詐尸還是另有隱情,我是刑警寧澤砾淌,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布啦撮,位于F島的核電站,受9級(jí)特大地震影響汪厨,放射性物質(zhì)發(fā)生泄漏赃春。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一劫乱、第九天 我趴在偏房一處隱蔽的房頂上張望聘鳞。 院中可真熱鬧,春花似錦要拂、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至窿春,卻和暖如春拉一,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旧乞。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工蔚润, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尺栖。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓嫡纠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親延赌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子除盏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

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

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,748評(píng)論 0 33
  • 總結(jié)一下常見(jiàn)的排序算法挫以。 排序分內(nèi)排序和外排序者蠕。內(nèi)排序:指在排序期間數(shù)據(jù)對(duì)象全部存放在內(nèi)存的排序。外排序:指在排序...
    jiangliang閱讀 1,351評(píng)論 0 1
  • 選擇排序 選擇排序是一種簡(jiǎn)單直觀的排序算法掐松,無(wú)論什么數(shù)據(jù)進(jìn)去都是 O(n?) 的時(shí)間復(fù)雜度踱侣。所以用到它的時(shí)候粪小,數(shù)據(jù)...
    無(wú)灃閱讀 1,327評(píng)論 0 0
  • APPDELEGATE - (void)application:(UIApplication *)applicat...
    不說(shuō)謊的匹諾曹Y閱讀 316評(píng)論 0 0
  • 周日的清晨,天氣格外晴朗抡句。幾位好友相約一起騎行去郊外游玩探膊、采野菜。 我們遠(yuǎn)離了車(chē)水馬龍玉转,遠(yuǎn)離了喧囂...
    獨(dú)芳自賞898閱讀 718評(píng)論 6 7