程序员

ios 快速排序

2020-05-15  本文已影响0人  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);

}

上一篇 下一篇

猜你喜欢

热点阅读