C++ C++;调度程序的排序功能

C++ C++;调度程序的排序功能,c++,sorting,scheduling,C++,Sorting,Scheduling,我有一个任务,在任务中,我会收到一份活动列表,其中包括开始时间和结束时间,我需要安排尽可能多的活动,假设只有一个房间可供使用。因此,事件按结束时间排序。我应该实现的排序算法如下: sort()-对数组数据[]进行排序的函数,用于创建排序索引数组。sort()函数不会对数据进行排序,而是填充数组indx[]中的 数据[indx[0]],数据[indx[1]],…,数据[indx[NUM_事件-1]] 是按升序排列的数据[]的值 我有点困惑它到底在问什么,但无论如何,这就是我到目前为止得到的: vo

我有一个任务,在任务中,我会收到一份活动列表,其中包括开始时间和结束时间,我需要安排尽可能多的活动,假设只有一个房间可供使用。因此,事件按结束时间排序。我应该实现的排序算法如下:

sort()-对数组数据[]进行排序的函数,用于创建排序索引数组。sort()函数不会对数据进行排序,而是填充数组indx[]中的 数据[indx[0]],数据[indx[1]],…,数据[indx[NUM_事件-1]] 是按升序排列的数据[]的值

我有点困惑它到底在问什么,但无论如何,这就是我到目前为止得到的:

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
中的每个元素都将被设置,而您不会遇到这个问题。