快速排序

2021-09-14  本文已影响0人  炒河粉儿

快速排序的核心思路

快速排序的操作流程

快速排序的相关

快速排序的代码简单实现

- (void)quickSort
{
    NSMutableArray *numberArray = [NSMutableArray arrayWithArray:@[@5,@1,@6,@2,@4,@3]];
    
    NSLog(@"排序之前的结果:%@",numberArray);
    
    [self quickwithArray:numberArray withLow:0 withHigh:(int)numberArray.count-1];
    
    
    NSLog(@"排序之后的结果:%@",numberArray);
}

- (void)quickwithArray:(NSMutableArray *)array withLow:(int)low withHigh:(int)high
{
    if (low<high) {
        
        int pivot = [self quickPartitionwithArray:array withLow:low withHigh:high];
        
        [self quickwithArray:array withLow:low withHigh:pivot-1];
        
        [self quickwithArray:array withLow:pivot+1 withHigh:high];
        
    }
}

- (int)quickPartitionwithArray:(NSMutableArray *)array withLow:(int)low withHigh:(int)high
{
    NSNumber *pivotKey = array[low];
    
    while (low<high) {

        while (low<high && [array[high] intValue] >= [pivotKey intValue]) {
            
            high--;
        }
        
        array[low] = array[high];
        
        while (low<high && [array[low] intValue] <= [pivotKey intValue]) {
            
            low++;
        }
        
        array[high] = array[low];

    }
    
    array[low] = pivotKey;
    
    return low;
}

上一篇 下一篇

猜你喜欢

热点阅读