插入排序算法使用第二个数组C ++

时间:2017-02-20 22:17:41

标签: c++ arrays algorithm sorting insertion-sort

尝试理解插入排序算法..

我的算法目前看起来像这样:

    void insertionSort(int *array, int N) {
        int value;
        int hole;
        int *array2;


        for (int i = 1; i < N - 1; i++) {
            value = array[i]; //next item to be inserted in array 2
            hole = i;
            while (hole > 0 && array[hole - 1] > value) {
                array[hole] = array[hole - 1];
                hole = hole - 1;
            }
            array[hole] = value;
        }
    }

我的算法适用于排序数组,但是我现在需要更改它,以便我一次构建一个新的排序数组(array2),而不是仅使用原始数组。

根据我完成的算法,是否有一种简单的方法可以实现这一点? 感谢。

1 个答案:

答案 0 :(得分:-2)

您可以使用以下方法:

int *array2 = calloc(N, sizeof(int));
for(var index = 0; index < N; index++)
{
   array2[index] = array[index];
}

之后使用array2而不是array 然后只需将函数的原型更改为int * insertionSort 剩下的就是在任务结束时返回array2 但要注意内存泄漏:https://en.wikipedia.org/wiki/Memory_leak