插入排序不打印 C 中的所有值
Insertion sort not printing all values in C
插入排序不起作用,它只打印一些值。有谁知道我可以做些什么来修复它?
void insertion(int Array[], int n) {
for (int i = 1; i < n; i++) {
int j = i;
while (j >= 0 && Array[j] < Array[j - 1]) {
int temp = Array[j];
Array[j] = Array[j - 1];
Array[j - 1] = temp;
j--;
}
}
}
内部循环中的测试不正确:当 j == 0
您读取并可能修改偏移量 -1
处的元素时,它具有 未定义的行为 ,可能导致输出不正确,但由于您没有 post 输出代码,因此可能还有其他问题。
这是修改后的版本:
void insertion(int Array[], int n) {
for (int i = 1; i < n; i++) {
for (int j = i; j > 0 && Array[j] < Array[j - 1]; j--) {
int temp = Array[j];
Array[j] = Array[j - 1];
Array[j - 1] = temp;
}
}
}
插入排序:想法
类似于大多数人排列一手扑克牌的方式
从手中的一张牌开始
选择下一张卡片并将其插入正确的排序顺序
对所有卡片重复上一步
插入排序不起作用,它只打印一些值。有谁知道我可以做些什么来修复它?
void insertion(int Array[], int n) {
for (int i = 1; i < n; i++) {
int j = i;
while (j >= 0 && Array[j] < Array[j - 1]) {
int temp = Array[j];
Array[j] = Array[j - 1];
Array[j - 1] = temp;
j--;
}
}
}
内部循环中的测试不正确:当 j == 0
您读取并可能修改偏移量 -1
处的元素时,它具有 未定义的行为 ,可能导致输出不正确,但由于您没有 post 输出代码,因此可能还有其他问题。
这是修改后的版本:
void insertion(int Array[], int n) {
for (int i = 1; i < n; i++) {
for (int j = i; j > 0 && Array[j] < Array[j - 1]; j--) {
int temp = Array[j];
Array[j] = Array[j - 1];
Array[j - 1] = temp;
}
}
}
插入排序:想法
类似于大多数人排列一手扑克牌的方式
从手中的一张牌开始
选择下一张卡片并将其插入正确的排序顺序
对所有卡片重复上一步