插入排序

插入排序的核心思路:从第二个数字开始,对第一二个数字进行排序;第三个数字插入到前面排好序的第一二个数字中来;以此类推,把第n个数字插入前面已经排好序的n-1个数字中来。

在这个过程中需要移位比较,例如从小到大排序:如果第n个数字前面有三个数字比它大,那么n位置前面的三个数字依次后移,空出位置插入第n个数字。

OC实现插入排序:

// 从小到大
- (NSArray *)insertionSortBigger:(NSMutableArray *)array {
    for (int n = 1; n<array.count; n++) {
        NSInteger valueN = [array[n] integerValue]; //取出第n个数字,对比大小,插入排序
        int j = n-1; // j代表n-1
        while (j>=0 && [array[j] integerValue] > valueN) { // 如果valueN前面的数字比valueN还大,那么,向后移位
            array[j+1] = array[j]; // 向后移位
            j--; // 再前一位对比valueN
        }
        array[j+1] = @(valueN); // 移位完成后插入
    }
    return array;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容