一顺少,Shell Sort簡介
希爾排序通過增量將數(shù)組中的元素分組,對分組中的所有元素進(jìn)行直接插入排序操作澳盐。通過不斷減小增量和直接插入操作祈纯,最終達(dá)到實現(xiàn)排序的目的。
二叼耙,圖片演示
希爾排序
圖片來自百度百科
三,Objective-C算法實現(xiàn)
- (void) shellSort {
NSInteger gap,i;
for ( gap = self.mutableArray.count/2; gap > 0; gap /=2) {
for ( i = gap; i < self.mutableArray.count; i++) {
if ([self.mutableArray[i] integerValue] < [self.mutableArray[i-gap] integerValue]) {
NSInteger target = [self.mutableArray[i] integerValue];
NSInteger j = i - gap;
while (j >= 0 && [self.mutableArray[j] integerValue] > target) {
self.mutableArray[j+gap] = self.mutableArray[j];
j -= gap;
}
self.mutableArray[j+gap] = [NSNumber numberWithInteger:target];
}
}
}
}