ios 快速排序

- (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);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。