C++ C++;调度程序的排序功能
我有一个任务,在任务中,我会收到一份活动列表,其中包括开始时间和结束时间,我需要安排尽可能多的活动,假设只有一个房间可供使用。因此,事件按结束时间排序。我应该实现的排序算法如下: sort()-对数组数据[]进行排序的函数,用于创建排序索引数组。sort()函数不会对数据进行排序,而是填充数组indx[]中的 数据[indx[0]],数据[indx[1]],…,数据[indx[NUM_事件-1]] 是按升序排列的数据[]的值 我有点困惑它到底在问什么,但无论如何,这就是我到目前为止得到的:C++ C++;调度程序的排序功能,c++,sorting,scheduling,C++,Sorting,Scheduling,我有一个任务,在任务中,我会收到一份活动列表,其中包括开始时间和结束时间,我需要安排尽可能多的活动,假设只有一个房间可供使用。因此,事件按结束时间排序。我应该实现的排序算法如下: sort()-对数组数据[]进行排序的函数,用于创建排序索引数组。sort()函数不会对数据进行排序,而是填充数组indx[]中的 数据[indx[0]],数据[indx[1]],…,数据[indx[NUM_事件-1]] 是按升序排列的数据[]的值 我有点困惑它到底在问什么,但无论如何,这就是我到目前为止得到的: vo
void sort(float data[], int indx[], int len){
int temp;
for (int i = 0; i < len; i++){
for (int j = 0; j < len; j++){
if (data[j] > data[j+1]){
temp = data[j];
indx[j] = data[j+1];
indx[j+1] = temp;
}
}
}
}
void排序(浮点数据[],int-indx[],int-len){
内部温度;
对于(int i=0;i数据[j+1]){
温度=数据[j];
indx[j]=数据[j+1];
indx[j+1]=温度;
}
}
}
}
这段代码可以编译,但没有正常运行。当我试图打印indx[]中的内容时,我得到了奇怪的结果。非常感谢您的帮助。谢谢 您正在读取未初始化的内存。您正在将元素从
data
复制到indx
,但仅当data[j]>data[j+1]
时。如果连续两次都不正确,则没有为indx
元素赋值。它有一个不确定的随机位值,由以前使用过的内存留下,读取它是未定义的行为。您能交叉检查数组indx
中的元素是否在[0,NUM\u EVENTS
-1]范围内吗?很可能,这就是问题所在。是的,我不认为这是一个问题。好吧,我正在研究。那么,我是否要通过添加一个其他的来解决这个问题呢?@MatthewHanson嗯,从技术上讲,你的解决方案是正确地完成作业。您需要填写indx
,以便它按升序保存数据的元素索引<代码>数据[indx[0]]
应该是数据中的最小元素。这意味着indx
中的每个元素都将被设置,而您不会遇到这个问题。