我使用此代码,但运行错误。它对一些数据进行排序,但其余数据 排序不正确。我想知道此代码中的错误在哪里,为什么?
git reset origin/dev
答案 0 :(得分:0)
在访问位于数组范围内的元素时要当心。
第for(int j=i+1;j <= col;j++){
行试图访问循环到数组中的最后一个元素时不存在的i+1
st 元素,因此可以避免通过使用for(int j=i+1;j < col;j++){
循环到倒数第二个元素。
此外,您将要为2D数组中的每个数组迭代排序算法。
因此您可以执行以下操作:
for(int n=0;n < row;n++){
for(int i=0;i < row;i++){
for(int j=i+1;j < col;j++){
if(*(*(mat + n) + i) >= *(*(mat + n) + j)){
int temp= *(*(mat + n) + i);
*(*(mat + n) + i) = *(*(mat + n) + j);
*(*(mat + n) + j) = temp;
}
}
}
}
答案 1 :(得分:0)
尚不清楚您想要的排序规则是什么,但是,假设需要任何合理一致的排序,也许您会接受将数组转换为一维数组或指针,并使用诸如qsort或std :: sort ...一直在争论是否导致未定义的行为,或者数组包装的规则是否确保始终定义良好-如果您相信后者,那么这可能是您的答案。