Objective-C实现希尔(Shell Sort)排序

一,Shell Sort简介

希尔排序通过增量将数组中的元素分组,对分组中的所有元素进行直接插入排序操作。通过不断减小增量和直接插入操作,最终达到实现排序的目的。

二,图片演示

Objective-C实现希尔(Shell Sort)排序_第1张图片
希尔排序

图片来自百度百科

三,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];
            }
                
        }
        
    }
    
}

特别感谢《白话经典算法系列》

你可能感兴趣的:(Objective-C实现希尔(Shell Sort)排序)