冒泡排序的ios下动画实现(objective-c)

目录

一:冒泡排序的基本介绍

二:冒泡排序动画的核心代码


以前在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)

以上内容仅供参考,如有不对,欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值