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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,248评论 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,293评论 0 2
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 2,327评论 0 35
  • 该系列文章主要是记录下自己暑假这段时间的学习笔记,暑期也在实习,抽空学了很多,每个方面的知识我都会另起一篇博客去记...
    Yanci516阅读 12,359评论 6 19
  • 今天一觉睡到八点半,懵懂地起床洗漱,突然想起了昨晚的梦。这个梦整体的感觉很好,大部分的内容忘记了,只记住了一句话—...
    此身越重洋l阅读 173评论 0 0