C ++选择排序

时间:2014-04-05 02:18:30

标签: c++ sorting

void sortSellersbyId (Seller sellerArray[], int size){
Seller small = sellerArray[0];
for (int x = 0; x < size; x++){
  for (int y = 1; y < size; y++){
    if (sellerArray[y].sellerId < sellerArray[x].sellerId){
      small = sellerArray[y];
      sellerArray[y] = sellerArray[x];
      sellerArray[x] = small;
      }
  }
}
}

我尝试使用选择排序按升序排列某些值。由于某种原因,[0]值是正确的,但是当我打印所有值时,其他所有内容都按降序排序。谁能告诉我我做错了什么?

编辑

感谢无论谁回答我的问题(然后由于某种原因立即将其删除)。这是我第一次实现任何类型的排序,所以我只是试图从逻辑上解决它,它显然很糟糕。

我接近但设置y = 1导致冗余检查,这也是反向切换我的值。在我的第二个for循环中设置y = x + 1会使循环忽略已经排序的值。发布的解决方案也有x&lt; size - 我的第一个循环中的1,因为最后一个值不需要排序。希望这些解释是正确的。这是有效的新输出。

void sortSellersbyId (Seller sellerArray[], int size){
Seller small = sellerArray[0];
for (int x = 0; x < size - 1; x++){
  for (int y = x + 1; y < size; y++){
    if (sellerArray[y].sellerId < sellerArray[x].sellerId){
      small = sellerArray[y];
      sellerArray[y] = sellerArray[x];
      sellerArray[x] = small;
      }
  }
}
}

0 个答案:

没有答案