gpt4 book ai didi

C++通过制作索引数组进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:14:34 25 4
gpt4 key购买 nike

我有一个项目要创建一个调度程序,其中一部分需要排序。我知道如何使用常规的冒泡排序来做到这一点,但项目要求我这样做......

sort() — 对 float 组数据[] 进行排序的函数,创建一个排序索引数组。 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;
}


}
}
}

最佳答案

试试这个:

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;
}
}
}

}

顺便说一下……您可以对冒泡排序方法进行某些优化。请记住,每次通过都需要少一次测试,因为一个元素会卡在其最终位置。如果您必须对长列表进行排序,这对性能有很大帮助。

关于C++通过制作索引数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35563636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com