八大排序之选择排序
2020-10-03 本文已影响0人
SourceZhang
核心思想:选择一个最 大/小 的元素往 后/前 丢
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];
}