TOP K I
来源:互联网 发布:淘宝修真记全集下载 编辑:程序博客网 时间:2024/06/05 22:52
问题:求一维数组中最小的k个数。
时间复杂度为O(n)的OC算法实现:
//// TopKI.h// Algorithm//// Created by han shuai on 2016/9/26.// Copyright © 2016年 han shuai. All rights reserved.///** 12 */#import <Foundation/Foundation.h>@interface TopKI : NSObject- (NSArray *)topk:(NSMutableArray *)dataArr k:(int)k;@end
//// TopKI.m// Algorithm//// Created by han shuai on 2016/9/26.// Copyright © 2016年 han shuai. All rights reserved.//#import "TopKI.h"@implementation TopKI- (NSArray *)topk:(NSMutableArray *)dataArr k:(int)k{ NSInteger start = 0; NSInteger end = dataArr.count-1; NSInteger index = [self partition:dataArr start:start end:end]; while (index != k-1) { if (index > k-1) { end = index -1; index = [self partition:dataArr start:start end:end]; } else{ start = index+1; index = [self partition:dataArr start:start end:end]; } } return [dataArr objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, k)]];}- (NSInteger)partition:(NSMutableArray *)dataArr start:(NSInteger)start end:(NSInteger)end{ if (start > end) { return -1; } NSInteger index = start;//可随机选择pivot,不一定是第一个元素 //第一次交换 [self swap:dataArr i:index j:end]; for (NSInteger i = start; i <end; i++) { if ([dataArr[i] intValue] < [dataArr[end] intValue]) { if (i!=index) { [self swap:dataArr i:index j:i]; } index++; } } [self swap:dataArr i:index j:end]; return index;}- (void)swap:(NSMutableArray *)dataArr i:(NSInteger)i j:(NSInteger)j{ NSNumber *temp = dataArr[i]; dataArr[i] = dataArr[j]; dataArr[j] = temp;}@end
0 0
- TOP K I
- TOP K
- Top K
- Top K
- TOP K
- top k
- TOP-K
- Top K
- Top k
- 面试题12:求一维数组中最小的k个数 top k I
- Top K algorithm
- Top K 算法详解
- TOP K问题
- Top K 算法
- Top K算法
- 区间 top k
- TOP K问题
- Top K问题
- Qt多线程编程总结(一)
- 临摹个ui中国的马桶怪
- Atitit java集成内嵌浏览器与外嵌浏览器attilax总结
- Browser Rendering Optimization-中文单词
- CSDN编辑也真是醉了
- TOP K I
- Xcode 8解决真机测试Log被屏蔽的问题
- adb shell命令大全
- QT 多线程程序设计
- SVM SMO Python
- linux程序设计:POSIX线程
- Eclipse和AndroidStudio的变量高亮设置
- poj3076 Sudoku--舞蹈链数独
- 当使用EGit(Eclipse Git)进行pull时,提示Could not get advertised Ref for branch refs/heads/xxx错误