美文网首页
排序算法---直接插入排序

排序算法---直接插入排序

作者: 明月倚深秋 | 来源:发表于2016-05-21 16:52 被阅读0次

    //插入排序,把待排序的数组分为两部分,左边为已经有序的数组,右边为待排序的元素。然后不断的从右边取出元素放入左边已经排序好的数组中。

    static NSArray * straightInsertionSort(NSArray *unsortedArr)

    {

    NSMutableArray *sortedArray = [NSMutableArray arrayWithArray:unsortedArr];

    /**  拿出每一个数  */

    /**  默认0 位置为已经排序的区间,0--->n为没有排序的区间,所以直接从1位置开始拿出数据  */

    for (int i = 1; i < sortedArray.count; i++)

    {

    /**  拿出当前位置的数a,和前一位置的数字b进行大小比较,如果a < b,就在0---->i - 1的区间内为a找一个合适的位置去存放  */

    /**  当前位置数字a  */

    int a = [sortedArray[i] intValue];

    /**  前一位置数字b  */

    int b = [sortedArray[i - 1] intValue];

    /**  如果a < b,则继续让a与b的前一位数字比较  */

    if (a < b)

    {

    /**  如果a < b,就在0---->i - 1的区间内为a找一个合适的位置去存放  */

    /**  从后往前找位置,0--->i - 1  */

    for (int j = i - 1; j >= 0; j --) {

    /**  2,12,98,42,94,46,53,12  */

    /**  取出前一位数字ca  */

    int c = [sortedArray[j] intValue];

    if (c <= a) {

    /**  对a进行位置移动,从原来位置删除,移动到c后面一位  */

    [sortedArray removeObjectAtIndex:i];

    [sortedArray insertObject:NUM(a) atIndex:j + 1];

    break;

    }

    }

    }

    }

    return sortedArray;

    }

    相关文章

      网友评论

          本文标题:排序算法---直接插入排序

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