一,Shell Sort简介
希尔排序通过增量将数组中的元素分组,对分组中的所有元素进行直接插入排序操作。通过不断减小增量和直接插入操作,最终达到实现排序的目的。
二,图片演示
图片来自百度百科
三,Objective-C算法实现
- (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];
}
}
}
}