// // Sort.h // #import.m文件@interface Sort : NSObject{ } //选择排序 -(void)selectSortWithArray:(NSArray *)aData; //插入排序 -(void)insertSortWithArray:(NSArray *)aData; //快速排序 -(void)quickSortWithArray:(NSArray *)aData; -(void)swapWithData:(NSMutableArray *)aData index1:(NSInteger)index1 index2:(NSInteger)index2; @end
// // Sort.m // #import "Sort.h" @interface Sort() -(void)quickSortWithArray:(NSArray *)aData left:(NSInteger)left right:(NSInteger)right; @end @implementation Sort - (id)init { self = [super init]; if (self) { // Initialization code here. } return self; } -(void)selectSortWithArray:(NSArray *)aData{ NSMutableArray *data = [[NSMutableArray alloc]initWithArray:aData]; for (int i=0; i<[data count]-1; i++) { int m =i; for (int j =i+1; j<[data count]; j++) { if ([data objectAtIndex:j] < [data objectAtIndex:m]) { m = j; } } if (m != i) { [self swapWithData:data index1:m index2:i]; } } NSLog(@"选择排序后的结果:%@",[data description]); [data release]; } -(void)insertSortWithArray:(NSArray *)aData{ NSMutableArray *data = [[NSMutableArray alloc]initWithArray:aData]; for (int i = 1; i < [data count]; i++) { id tmp = [data objectAtIndex:i]; int j = i-1; while (j != -1 && [data objectAtIndex:j] > tmp) { [data replaceObjectAtIndex:j+1 withObject:[data objectAtIndex:j]]; j--; } [data replaceObjectAtIndex:j+1 withObject:tmp]; } NSLog(@"插入排序后的结果:%@",[data description]); [data release]; } -(void)quickSortWithArray:(NSArray *)aData{ NSMutableArray *data = [[NSMutableArray alloc] initWithArray:aData]; [self quickSortWithArray:data left:0 right:[aData count]-1]; NSLog(@"快速排序后的结果:%@",[data description]); [data release]; } -(void)quickSortWithArray:(NSMutableArray *)aData left:(NSInteger)left right:(NSInteger)right{ if (right > left) { NSInteger i = left; NSInteger j = right + 1; while (true) { while (i+1 < [aData count] && [aData objectAtIndex:++i] < [aData objectAtIndex:left]) ; while (j-1 > -1 && [aData objectAtIndex:--j] > [aData objectAtIndex:left]) ; if (i >= j) { break; } [self swapWithData:aData index1:i index2:j]; } [self swapWithData:aData index1:left index2:j]; [self quickSortWithArray:aData left:left right:j-1]; [self quickSortWithArray:aData left:j+1 right:right]; } } -(void)dealloc{ [super dealloc]; } -(void)swapWithData:(NSMutableArray *)aData index1:(NSInteger)index1 index2:(NSInteger)index2{ NSNumber *tmp = [aData objectAtIndex:index1]; [aData replaceObjectAtIndex:index1 withObject:[aData objectAtIndex:index2]]; [aData replaceObjectAtIndex:index2 withObject:tmp]; } @end代码测试
// // main.m // #import#import "Sort.h" #define kSize 20 #define kMax 100 int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; // insert code here... NSLog(@"Hello, World!"); NSMutableArray *data = [[NSMutableArray alloc] initWithCapacity:kSize]; for (int i =0;i
收藏的用户(0) X
正在加载信息~
推荐阅读
使用UITableView+FDTemplateLayoutCell高度缓存以及实现文本展开全文和收起功能
最新回复 (0)
站点信息
- 文章2305
- 用户1336
- 访客11380664
每日一句
Great people do things before they are ready.
伟大的人在准备好前就行动。
伟大的人在准备好前就行动。
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is
Android 8.0应用图标适配
解决vue动态生成el-table-column按钮点击事件
VC++实现远程控制
傻瓜式安装黑苹果的方式,超简单,吐血推荐!
Android最简单方式实现DatePickerDialog只显示年、月、日
mysql查询表索引的命令使用小记
Mac OS解决开机黑屏时间长(秒启动)
使用HTML和CSS设计磨砂玻璃效果
简单利用Clover四叶草安装U盘安装黑苹果
font-awesome-to-png快速将Font-Awesome字体保存为PNG图片
2017年10月编程语言排行榜
XPosed插件自动生成支付宝收款二维码
新会员