我有一个项目来创建一个调度程序,其中一部分需要排序。我知道如何使用常规冒泡排序来执行此操作,但项目要求我这样做...
sort() - 一个对浮点数组data []进行排序的函数,创建一个排序索引数组。 sort()函数不对数据进行排序,而是填充数组indx [] 数据[indx [0]],数据[indx [1]],...,数据[indx [NUM_EVENTS - 1]] 是data []的值按升序排列。
我在这里的代码对数据进行了排序,但它并没有按照预期的方式进行。它需要这样,因为我们不使用对象,并且不同数组的索引需要对应。我真的无法弄清楚如何使它按索引排序。任何帮助将不胜感激。
void sort(float data[], int indx[], int len){
float temp;
//this for loop was just to declare the array of indices
//as it is passed in empty
for (int i = 0; i < len; i++){
indx[i] = i;
}
for (int i = 0; i < len - 1; i++){
for (int j = 0; j < len - 1; j++){
if (data[j] > data[j+1]){
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
}
答案 0 :(得分:1)
请改为尝试:
void sort(float data[], int indx[], int len) {
float temp;
for (int i = 0; i < len; i++) {
indx[i] = i;
}
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 2; j++) {
if (data[indx[j]] > data[indx[j+1]]) {
temp = indx[j];
indx[j] = indx[j+1];
indx[j+1] = temp;
}
}
}
}
顺便说一下......你可以对冒泡排序方法进行某些优化。请记住,每次传递都需要少一次测试,因为一个元素会卡在其最终位置。如果你必须对长列表进行排序,这在性能方面会有很大帮助。