美文网首页
插入排序

插入排序

作者: shanguo | 来源:发表于2017-10-23 10:19 被阅读7次

插入排序的核心思路:从第二个数字开始,对第一二个数字进行排序;第三个数字插入到前面排好序的第一二个数字中来;以此类推,把第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;
}

相关文章

网友评论

      本文标题:插入排序

      本文链接:https://www.haomeiwen.com/subject/nwpouxtx.html