美文网首页
八大排序之选择排序

八大排序之选择排序

作者: Source_Chang | 来源:发表于2020-10-03 09:10 被阅读0次

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

    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

    相关文章

      网友评论

          本文标题:八大排序之选择排序

          本文链接:https://www.haomeiwen.com/subject/asbbuktx.html