C++ &引用;链接..\SOURCE\MERGEEXE.EXE:";错误
我找到了一个用于测量执行时间的合并排序算法的代码,但是当我运行它时,程序不会显示,并且“Linking..\SOURCE\MERGEEXE.EXE:”在消息面板中。代码的哪一部分是错误的C++ &引用;链接..\SOURCE\MERGEEXE.EXE:";错误,c++,mergesort,turbo-c++,linker-errors,C++,Mergesort,Turbo C++,Linker Errors,我找到了一个用于测量执行时间的合并排序算法的代码,但是当我运行它时,程序不会显示,并且“Linking..\SOURCE\MERGEEXE.EXE:”在消息面板中。代码的哪一部分是错误的 #include <iostream.h> #include <time.h> void mergesort(int[], int, int); void merge(int[], int, int, int); void mergesort(int a[], int low, int
#include <iostream.h>
#include <time.h>
void mergesort(int[], int, int);
void merge(int[], int, int, int);
void mergesort(int a[], int low, int high)
{
int mid;
if (low < high) {
mid = (low + high) / 2;
mergesort(a, low, mid);
mergesort(a, mid + 1, high);
merge(a, low, high, mid);
}
}
void merge(int a[], int low, int high, int mid)
{
int i, j, k, c[50];
i = low;
j = mid + 1;
k = low;
while ((i <= mid) && (j <= high)) {
if (a[i] < a[j]) {
c[k] = a[i];
k++;
i++;
}
else {
c[k] = a[j];
k++;
j++;
}
}
while (i <= mid) {
c[k] = a[i];
k++;
i++;
}
while (j <= high) {
c[k] = a[j];
k++;
j++;
}
for (i = low; i < k; i++) {
a[i] = c[i];
}
}
int main()
{
int randNum[100];
clock_t sTime;
srand((unsigned)clock());
cout << "Start generating random numbers..." << endl;
for (int index = 0; index < 100; index++) {
randNum[index] = (rand() % 1000) + 1;
}
sTime = clock();
mergesort(randNum, 0, 99);
// delay the program by 0.05 second
clock_t cWait = clock();
cout << "Total CPU time used: " << (double)(clock() - sTime) / CLOCKS_PER_SEC << " seconds" << endl;
}
#包括
#包括
无效合并排序(int[],int,int);
无效合并(int[],int,int,int);
无效合并排序(整数a[],整数低,整数高)
{
int mid;
如果(低<高){
中等=(低+高)/2;
合并排序(a、低、中);
合并排序(a、中+1、高);
合并(a、低、高、中);
}
}
无效合并(整数a[],整数低,整数高,整数中)
{
inti,j,k,c[50];
i=低;
j=mid+1;
k=低;
当((i> p>您的<强> c< /s>数组是50,而您正在传递100个随机数给函数,因此分割错误。增加您的<强> c<强数组>的大小,它应该工作得很好。 首先确定,这个代码的源代码使用什么编译器?用DEV C++ 5.1尝试,并调整一些地方。这里的代码是编译的答案(尽管我不能保证预期的输出)
#包括
#包括
#包括
使用名称空间std;
无效合并排序(int[],int,int);
无效合并(int[],int,int,int);
无效合并排序(整数a[],整数低,整数高)
{
int mid;
如果(低<高){
中等=(低+高)/2;
合并排序(a、低、中);
合并排序(a、中+1、高);
合并(a、低、高、中);
}
}
无效合并(整数a[],整数低,整数高,整数中)
{
inti,j,k,c[50];
i=低;
j=mid+1;
k=低;
而((我做了一个琐碎的“hello world”节目“show up”?在代码中包含正确的头。为什么您的程序以这种奇怪的方式格式化?代码的哪一部分是错误的?如果您的程序没有生成编译器,编译器会告诉您原因。#包含这是turboc++?我已经更改了c数组,但仍然收到相同的链接错误。现在出现了什么错误?您可以将问题修改为当前的st吗您的程序是否过期?我仍然在消息面板中看到相同的“Linking..\SOURCE\MERGEEXE.EXE:”和“Compiling..\SOURCE\MERGEEXE.EXE:”。没有显示任何警告,表明代码中没有错误
#include <iostream>
#include <stdlib.h>
#include <ctime>
using namespace std;
void mergesort(int[], int, int);
void merge(int[], int, int, int);
void mergesort(int a[], int low, int high)
{
int mid;
if (low < high) {
mid = (low + high) / 2;
mergesort(a, low, mid);
mergesort(a, mid + 1, high);
merge(a, low, high, mid);
}
}
void merge(int a[], int low, int high, int mid)
{
int i, j, k, c[50];
i = low;
j = mid + 1;
k = low;
while ((i <= mid) && (j <= high)) {
if (a[i] < a[j]) {
c[k] = a[i];
k++;
i++;
}
else {
c[k] = a[j];
k++;
j++;
}
}
while (i <= mid) {
c[k] = a[i];
k++;
i++;
}
while (j <= high) {
c[k] = a[j];
k++;
j++;
}
for (i = low; i < k; i++) {
a[i] = c[i];
}
}
int main()
{
int randNum[100];
clock_t sTime;
//srand((unsigned)clock(NULL));
srand (time(NULL));
cout << "Start generating random numbers..." << endl;
for (int index = 0; index < 100; index++) {
randNum[index] = (rand() % 1000) + 1;
}
sTime = clock();
mergesort(randNum, 0, 99);
// delay the program by 0.05 second
clock_t cWait = clock();
cout << "Total CPU time used: " << (double)(clock() - sTime) / CLOCKS_PER_SEC << " seconds" << endl;
}