目录
以前在Macbook下编程时,写的一个实现冒泡排序的小程序,程序真的很小的。主要是在xcode下,用objective-c语言实现的。
一:冒泡排序的基本介绍
冒泡排序(Bubble Sort)是最简单的一种交换排序。冒泡排序(Bubble Sort)的基本过程如下:
例如有一组数字(120,80,20,10,1),每进行一趟排序,便将这趟序列中最大的数字沉入底部。
如上图所示:
第一趟排序:将120沉入底 (看蓝色部分)
第二趟排序:将80沉入底(看蓝色部分)
第三趟排序:将20沉入底(看蓝色部分)
第四趟排序:将10沉入底 (看蓝色部分)
二:冒泡排序动画的核心代码
(void)compare{
[bn setEnabled:NO];
[bn setTitle:@"排序中" forState:UIControlStateNormal];
bn.backgroundColor=[UIColor grayColor];
for(i=0;i<4;i++){
for(j=0;j<4-i;j++){
label6=[[UILabel alloc]init];
label7=[[UILabel alloc]init];
label6=array1[j];
n1=[label6.text intValue];
label7=array1[j+1];
n2=[label7.text intValue];
label6.backgroundColor=[UIColor orangeColor];
label7.backgroundColor=[UIColor orangeColor];
if(n1>n2)
{
CGRect rect;
rect=label6.frame;
[UIView animateWithDuration:2 animations:^{label6.frame=label7.frame;[self.view layoutIfNeeded];}];
[UIView animateWithDuration:2 animations:^{label7.frame=rect;[self.view layoutIfNeeded];}];
[array1 exchangeObjectAtIndex:j withObjectAtIndex:j+1];
}
[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:3]];
label6.backgroundColor=[UIColor blueColor];
label7.backgroundColor=[UIColor blueColor];
}
label6.backgroundColor=[UIColor redColor];
}
label7.backgroundColor=[UIColor redColor];
[bn setTitle:@"排序结束" forState:UIControlStateNormal];
}
冒泡排序标签上方,建立五个 label ,每个lable 放一个数字,然后运行冒泡排序程序进行排序,当然,运行时还有渐变过渡效果。
运行效果如下图所示:
点击冒泡排序之后的效果图:
这个小程序是我以前做的,运行效果以前放在新浪微博上了,如果有兴趣,可以看一下运行效果:
新浪微博网址:冒泡排序,用xcod... - @水木姚姚 的视频 - 视频 - 微博 (weibo.com)
以上内容仅供参考,如有不对,欢迎指正。