图形化冒泡排序
来源:互联网 发布:搜狗输入法mac版本 编辑:程序博客网 时间:2024/06/07 12:08
今天晚上下班回来 , 一朋友问我想把冒泡排序图形化展示出来 , 是怎样 , 我想大概也就是肉眼比较直观的吧 .既然没说用什么语言 , OC自带方法就可以实现了 , 只是在处理view上稍微麻烦点 .
#import "ViewController.h"@interface ViewController ()//存储所有的label@property (strong ,nonatomic) NSMutableArray *labelsInfo;//存储所有的X值@property (strong, nonatomic) NSArray *positionXNew;@end
- (void)viewDidLoad { [super viewDidLoad]; CGFloat width = 25.f; CGFloat height = 25.f; self.labelsInfo = [NSMutableArray array]; //创建10个label用于展示 for (NSInteger index = 0; index < 10; index++) { CGFloat labelX = arc4random_uniform(self.view.bounds.size.width - width); CGFloat labelY = arc4random_uniform(self.view.bounds.size.height - height);; UILabel *label = [[UILabel alloc]init]; label.backgroundColor = [UIColor colorWithRed:arc4random_uniform(255)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1.0]; label.frame = CGRectMake(labelX, labelY, width, height); label.textAlignment = NSTextAlignmentCenter; label.text = [NSString stringWithFormat:@"%li",index]; [self.view addSubview:label]; //存储初始化数据 [self.labelsInfo addObject:@{@"obj":label,@"X":@(labelX)}]; } //重新整理数据 NSArray *array = [self.labelsInfo valueForKey:@"X"]; array = [array sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { return obj1 > obj2; }]; //保存所有X值 self.positionXNew = array;}
//点击屏幕实现排序- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ dispatch_async(dispatch_get_global_queue(0, 0), ^{ //重新升序赋值 for (NSInteger i = 0; i < self.labelsInfo.count; i ++) { //线程稍作睡眠 , 看起来比较直观一些 [NSThread sleepForTimeInterval:1.f]; dispatch_async(dispatch_get_main_queue(), ^{ UILabel *label = [self.labelsInfo valueForKey:@"obj"][i]; __block CGPoint center = label.center; __block CGRect bounds = label.bounds; [UIView animateWithDuration:1.f animations:^{ bounds.size.width = 25.f + i *5; bounds.size.height = 25.f + i *5; center.x = [self.positionXNew[i]floatValue]; center.y = self.view.bounds.size.height/2; label.bounds = bounds; label.center = center; }]; }); } });}
//实现结果如下:
0 0
- 图形化冒泡排序
- 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序
- iOS开发--图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序
- 图形化排序算法
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- IPv6详解:SHA1算法实现及详解
- 【JZOJ 4816】【NOIP2016提高组 五校联考4】label
- 学生管理系统
- Android 应用界面开发之基本控件学习总结
- [转载]各种安装包打包发布工具(安装制作工具)评测
- 图形化冒泡排序
- Ubuntu Kylin下Android编译环境构建
- 小白学习-linux之启动脚本方法
- Jenkins入门系列之——01第一章 Jenkins是什么?
- golang实现的http反向代理
- 洛谷-刷题
- 设计模式--工厂模式
- UVa - 725 - Division(暴力枚举)
- HTML-插入图片