八大排序之选择排序

2020-10-03  本文已影响0人  Source_Chang

核心思想:选择一个最 大/小 的元素往 后/前 丢

C++:

void SelectSort::sort(std::vector<int>& arrNumbers) {
    
    for ( int i = arrNumbers.size() - 1; i > 0; --i ) {
        
        int maxIndex = 0;
        for ( int j = 0; j <= i; ++j ) {
            
            if ( arrNumbers[j] > arrNumbers[maxIndex] ) {
                
                maxIndex = j;
            }
        }
        if ( maxIndex != i ) {
            
            std::swap(arrNumbers[maxIndex], arrNumbers[i]);
        }
    }
}

Objective-C:

+ (nonnull NSArray<NSNumber *> *)selectSort:(nonnull NSArray<NSNumber *> *)arrNumbers {
    
    NSMutableArray<NSNumber *> *arrMNumbers = [arrNumbers mutableCopy];
    for ( NSInteger i = arrMNumbers.count - 1; i > 0; --i ) {
        
        NSInteger maxIndex = 0;
        for ( NSInteger j = maxIndex; j <= i; ++j ) {
            
            if ( arrMNumbers[j].integerValue > arrMNumbers[maxIndex].integerValue ) {
                
                maxIndex = j;
            }
        }
        if ( maxIndex != i ) {
            
            NSNumber *temp = arrMNumbers[i];
            arrMNumbers[i] = arrMNumbers[maxIndex];
            arrMNumbers[maxIndex] = temp;
        }
    }
    
    return [arrMNumbers copy];
}

DEMO

上一篇下一篇

猜你喜欢

热点阅读