我正在学习如何在c中实现Mergesort,遇到了以下问题。
这是我的合并函数,它将两个排序数组合并为一个排序数组。
void merge(int *list, int *final, int start, int mid, int stop) {
int h = start;
int i = start;
int j = mid + 1;
while ((h <= mid) && (j <= stop)) {
if (list[h] <= list[j]) {
final[i] = list[h];
h++;
} else {
final[i] = list[j];
j++;
}
i++;
}
/* CODE A */
if (h > mid) {
for (int k = j; k <= stop; k++) {
final[i] = list[k];
i++;
}
} else {
for (int k = h; k <= mid; k++) {
final[i] = list[k];
i++;
}
}
/* End of CODE A */
/* CODE B */
while ( h <= mid) {
list[i] = final[h];
i++; h++;
}
while ( j <= stop ) {
list[i] = final[j];
i++; j++;
}
/* End of CODE B */
for (int k = start; k <= stop; k++) {
list[k] = final[k];
printArray(list, 4, "Intermediate Array: ");
}
}
在任何时候,我都使用代码A或代码B。当我使用代码A时,函数按预期执行。然而,当我使用CODE B时,函数会用随机数据填充数组列表。
printArray是一个自定义函数,用于打印数组、列表。当对一组数字{4,2,6,9}进行排序时,我从printArray函数中得到以下输出:
Intermediate Array: 2 2 6 9 <br>
Intermediate Array: 2 -790123182 6 9<br>
Intermediate Array: 2 -790123182 6 1968115546<br>
Intermediate Array: 2 -790123182 6 1968115546<br>
Intermediate Array: 2 -790123182 6 1968115546<br>
Intermediate Array: 2 -790123182 6 1968115546<br>
Intermediate Array: 2 -790123182 6 1968115546<br>
Intermediate Array: 2 -790123182 6 1968115546<br>
在代码B中,从list
到最终
的赋值方向错误。试试这个:
/* CODE B */
while ( h <= mid) {
final[i] = list[h];
i++; h++;
}
while ( j <= stop ) {
final[i] = list[j];
i++; j++;
}
/* End of CODE B */
如果在这个程序中,我正在输入一个大小7.so的数组从main()merge_sort(arr,0,6)被传递到相应的函数后,条件被检查,如果(0 但我能够理解合并排序(arr,mid1,high);有人打电话吗?但这个程序运行良好。请解释编译器如何调用merge_sort(arr、mid 1、high)
我正在努力解决这个问题,合并两个排序数组(或在这个特定情况下的向量)。当将向量元素记录到控制台时,我得到了非常奇怪的输出。我的理想输出将是所有按顺序排列的数字。 代码如下: 以下是控制台的说明:
我正在尝试做这个多重递归合并排序的迭代版本: 我只需要使这个排序函数可迭代: 合并功能可以相同: 我很难将多重递归函数转换为迭代函数。 谢谢你的问候。
本文向大家介绍C语言实现堆排序的简单实例,包括了C语言实现堆排序的简单实例的使用技巧和注意事项,需要的朋友参考一下 本文通过一个C语言实现堆排序的简单实例,帮助大家抛开复杂的概念,更好的理解堆排序。 实例代码如下:
合并排序通常是对链表排序的首选方式。链表缓慢的随机访问性能使得一些其他算法(如quicksort)表现不佳,而另一些算法(如heapsort)则完全不可能。我一直在努力在链表上做归并排序。它不断返回一个错误。我正在提供我试图执行的代码。请一定要帮我。它不断给出运行时错误。
本文向大家介绍C语言实现冒泡排序算法,包括了C语言实现冒泡排序算法的使用技巧和注意事项,需要的朋友参考一下 BubblSort.c 以上所述就是本文的全部内容了,希望对大家学习C语言能够有所帮助。