如何编写插入排序

时间:2017-11-10 23:24:29

标签: c++ sorting

有人可以解释为什么这不起作用吗? 例如,如果我有这个数组:3 4 1 2 55 32 1111 53
输出将是3 3 3 4 32 53 55 1111.
谢谢!

void insertionSort(int arr[], int len) {
int i, j, tmp;
for (i = 1; i < len; i++) {
    tmp = arr[i];
    for (j = i - 1; j >= 0; j--) {
        if (arr[j] > tmp) {
            arr[j + 1] = arr[j];
        }
        else {
            arr[j + 1] = tmp;
            break;
        }
    }
}}

1 个答案:

答案 0 :(得分:1)

您发布的内容不是维基百科伪代码的真实翻译。

void insertion_sort(int arr[], const int len) {
    for (int i = 1; i < len; ++i) {
        int x = arr[i];
        int j = i-1;
        while((j >= 0)&&(arr[j] > x)) {
            arr[j + 1] = arr[j];
            j = j-1;
        }
        arr[j+1] = x;
   }
}

欢迎使用StackOverlow。在发布其他问题之前,请阅读有关Asking的所有链接。特别注意关于MCVE

的那个