美文网首页
插入排序

插入排序

作者: foolish_hungry | 来源:发表于2020-06-23 16:48 被阅读0次

思想:分成未排序和已排序两个部分, 从未排序的部分取出一个元素, 将这个元素和已排序的部分数据做对比, 找到插入位置, 将该位置处的数据向后移动, 将插入位置数据赋值(从未排序中取出的值)

int* insertSort(int a[], int n) {
    if (n <= 1) {
        return a;
    }
    int i = 1;
    for (i = 1; i < n; i++) {
       // 分割已排序和未排序两个部分 
        int j = i - 1;
       // 从未排序的部分取出一个元素
        int value = a[i];
        // 找到插入位置
        for (; j >= 0; --j) {
            if (a[j] > value) {  // 做移动操作
                a[j+1] = a[j];
            } else {
                break;
            }
        }
        // 做插入操作
        a[j+1] = value;
    }
    return a;
}

使用

int a[5] = {3, 1, 5, 4, 2};
    int number = sizeof(a) / sizeof(int);
    int *b = insertSort(a, number);
    for (int i = 0; i < number; i++) {
        NSLog(@"%d", b[i]);
    }

相关文章

网友评论

      本文标题:插入排序

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