OC的快排实现
//
// main.m
// sort
//
// Created by apple on 18/4/2.
// Copyright © 2018年 . All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Thread.h"
void swapdata(NSMutableArray *adata,NSInteger index1,NSInteger index2){
NSNumber *i = [adata objectAtIndex:index1];
adata [index1] = adata [index2];
adata [index2]= i;
// [adata replaceObjectAtIndex:index1 withObject:[adata objectAtIndex:index2]];
// [adata replaceObjectAtIndex:index2 withObject:i];
}
void qucicksort(NSMutableArray *adata,NSInteger low,NSInteger high){
if(low < high){
NSInteger i = low;
NSInteger j = high ;
NSInteger key = low; //把数组的第一个数作为一个KEY值
while(i<j){
while([adata[j] intValue]>=[adata[key] intValue]&&i<j){ //注:NSNumber 的值无法直接比较大小整数可进行intValue转化进行比较。从数组末向头找如果当前值大于KEY值则 继续向前寻找
j--;
}
swapdata(adata, key, j); //若当前值小与KEY值则交换
key = j;
while([adata[i] intValue]<=[adata[key] intValue]&&i<j){ // 从数组头向尾找如果当前值大于KEY值则 继续向后寻找
i++;
}
swapdata(adata, i, key);
key = i;
}
qucicksort(adata, low, key-1); // 将KEY值左侧重新排序
qucicksort(adata, key+1, high); // 将KEY值右侧重新排序
}
}
void quickSort(NSArray* adata){
NSMutableArray *data = [[NSMutableArray alloc]initWithArray:adata];
qucicksort(data, 0, [adata count]-1);
NSLog(@"快速排序后的结果: %@", data);
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSArray *array = [[NSArray alloc]initWithObjects:@"5",@"3",@"0",@"9", nil];
quickSort(array);
}
return 0;
}