- (void)viewDidLoad {
[super viewDidLoad];
//初始化 创建数组
NSMutableArray *mArray = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:1], [NSNumber numberWithInt:1], [NSNumber numberWithInt:8], [NSNumber numberWithInt:7], [NSNumber numberWithInt:1], [NSNumber numberWithInt:6],[NSNumber numberWithInt:4],[NSNumber numberWithInt:5],nil];
[selfsortArray:mArrayleft:0right:mArray.count-1];
}
-(void)sortArray:(NSMutableArray *)array left:(int)left right:(int)right{
if (left>=right) {//如果数组长度为0或1时返回
return;
}
int i = left;
int j = right;
//记录比较基准数
NSNumber *key = array[left];
while (i<j) {
/* 首先从右边j开始查找比key小的值 */
while (i<j&&[key intValue] <= [array[j] intValue]) {//如果比key大 则 j--
j--;
}
if (i != j) {//如果比key小,则将查找到的小值调换到i的位置
array[i] = array [j];
}
/* 当在右边查找到一个比key小的值时,就从i开始往后找比key大的值 */
while (i<j&&[key intValue] >= [array[i] intValue]) {//如果比key小 则 i++
i++;
}
if (i != j) {//如果比key大,则将查找到的大值调换到j的位置
array[j] = array[i];
}
}
array[i] = key;
/*递归排序 */
//排序key左边的
[self sortArray:array left:left right:i-1];
//排序key右边边的
[self sortArray:array left:i+1 right:right];
NSLog(@"%@",array);
}
网友评论