【发布时间】:2020-03-31 01:17:05
【问题描述】:
所以我试图按字母顺序对已添加到数组中的书籍列表进行排序,但是,每当我输入第三本书时,列表就会翻转并按非字母顺序对列表进行排序。
如果有人知道这是为什么,请发表评论并告诉我,我的代码如下。
判断两个索引是否需要交换的排序
private void bookSort()
{
for (int y = 0; y < 20; y++)
{
for (int x = 0; x < bookPTR - 1; x++)
{
if (string.Compare(books[x].GStitle, books[x + 1].GStitle) > 0)
{
bookSwapRoutine(books[x]);
}
}
}
}
交换本身
private void bookSwapRoutine(Book book, int x = 0)
{
string tempString = books[x].GStitle;
books[x].GStitle = books[x + 1].GStitle;
books[x + 1].GStitle = tempString;
int tempInt = books[x].GSisbn;
books[x].GSisbn = books[x + 1].GSisbn;
books[x + 1].GSisbn = tempInt;
tempString = books[x].GSauthor;
books[x].GSauthor = books[x + 1].GSauthor;
books[x + 1].GSauthor = tempString;
tempString = books[x].GSpublisher;
books[x].GSpublisher = books[x + 1].GSpublisher;
books[x + 1].GSpublisher = tempString;
double tempDouble = books[x].GSprice;
books[x].GSprice = books[x + 1].GSprice;
books[x + 1].GSprice = tempDouble;
tempString = books[x].GSdate;
books[x].GSdate = books[x + 1].GSdate;
books[x + 1].GSdate = tempString;
}
【问题讨论】:
-
不是您问题的答案,但为什么要进行这样的交换?为什么不做类似
Book tempBook = book[x]; book[x] = book[y]; book[y] = tempBook;的事情? -
@TentMan8001 这个任务在我看来相当学术,你自己写排序算法有什么原因吗?您是否考虑过实现一个比较器并用它对书籍进行排序?
-
你甚至可以和
(book[x], book[y]) = (book[y], book[x])交换
标签: c# bubble-sort