我需要帮助了解我的错误。我试图使插入排序,但它不工作。
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;
}
}
}
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;
}
我觉得你有一些问题如下:
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;
}
}