很抱歉在我解决其他问题之前打开另一个话题。这是一个更大的问题。我不知道是否有人会理解我的代码,因为我把它翻译成英语。这个程序的工作方式就像一个来自互联网的订单列表或类似的东西。您可以添加订单,删除订单,按ID或日期排序订单,您可以保存订单并加载订单。按日期排序是我的问题。例如,我添加像2013、2011和2012这样的日期。当我试着给它们排序的时候什么都没有发生,它们保持着同样的顺序。如果有人明白这一点,请告诉我是什么问题?这是学校的作业,我需要在明天之前把它修好。有人能帮我一下吗?
// according = 1 (Date) 2 = (Price)
void sort(int accor)
{
int i,j,replace=0;
ORDER *Pom;
for(i=0;i<Piece-1;i++){
for(j=0;j<Piece-1;j++){
if(according == 1){
if(strcmp(Item[j]->Date, Item[j+1]->Date) > 0)
replace = 1;
else
replace = 0;
}else if(according == 2){
if(Item[j]->Price > Item[j+1]->Price )
replace = 1;
else
replace = 0;
}
if(replace){
Pom = Item[j];
Item[j] = Item[j+1];
Item[j+1] = Pom;
}
将循环修改如下:
for (i = (Piece - 1); i > 0; i--)
{
for (j = 1; j <= i; j++)
{
// compare and swap
}
}
来源:http://www.algorithmist.com/index.php/Bubble_sort.c