我需要帮助来了解我的错误。我试图使插入排序,但它不是做的工作。
void insertionSort(int A[]) {
int temp, j, d;
for (int i = 1; i <= dim - 1; i++) {
j = i;
while (d > 0 && A[d-1] > A[d]) {
temp = A[j];
A[j] = A[j - 1];
A[j - 1] = temp;
}
}
}
答案 0 :(得分:0)
d
未初始化,因此将具有垃圾值。
而且我认为您必须尝试遵循
for (int i = 1; i <dim; i++) {
j = i - 1;
d = A[i];
while(j>=0 && A[j-1] > d){
/* other code */
j = j-1;
}
A[j+1] = d;
}
答案 1 :(得分:0)
我认为您遇到以下问题:
d
应改为j
函数原型应为void insertionSort(int A[], int dim)
用于插入的逻辑是不正确的。
这是我根据您的源代码所做的修改:
void insertionSort(int A[], int dim)
{
int temp, j;
for (int i = 1; i < dim; i++) {
temp = A[i];
j = i;
while (j > 0 && A[j - 1] > temp) {
A[j] = A[j - 1];
j--;
}
A[j] = temp;
}
}