Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 按日期排序问题_C_Sorting_Date Sorting - Fatal编程技术网

C 按日期排序问题

C 按日期排序问题,c,sorting,date-sorting,C,Sorting,Date Sorting,很抱歉在我解决其他问题之前打开另一个主题。这是一个更大的问题。我不知道是否有人会理解我的代码,因为我把它翻译成了英语。这个程序就像一个来自互联网的订单列表或类似的东西。您可以添加订单、删除订单、按ID或日期对订单进行排序、保存订单并加载订单。按日期排序是我的问题。例如,我添加了2013、2011和2012等日期。当我尝试对它们进行排序时,什么也没有发生,它们保持相同的顺序。如果有人理解这一点,请告诉我问题是什么?这是一个学校的项目,我需要把它修好直到明天。有人能帮我吗 // according

很抱歉在我解决其他问题之前打开另一个主题。这是一个更大的问题。我不知道是否有人会理解我的代码,因为我把它翻译成了英语。这个程序就像一个来自互联网的订单列表或类似的东西。您可以添加订单、删除订单、按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;
            }
//依据=1(日期)2=(价格)
无效排序(国际雅高)
{
int i,j,replace=0;
订单*Pom;
对于(i=0;iDate)>0)
替换=1;
其他的
替换=0;
}否则如果(根据==2){
if(项目[j]->价格>项目[j+1]->价格)
替换=1;
其他的
替换=0;
}
如果(更换){
Pom=项目[j];
第[j]项=第[j+1]项;
第[j+1]项=Pom;
}

将循环更改为如下所示:

for (i = (Piece - 1); i > 0; i--)
{
  for (j = 1; j <= i; j++)
  {
  // compare and swap
  }
}
for(i=(件-1);i>0;i--)
{

对于(j=1;j)一个小小的挑剔:
Item[j+]->Date
应该是
Item[j+1]->Date
。尝试使用
i
而不是
j+1
,在交换项目之前,检查
i
是否不等于
j
。希望有帮助。什么类型的
Item[]
?顺序数组*
?声明的
项在哪里,它是如何填充的?你试过调试你的代码吗?它是否进入了
替换
检查?user2448027,不使用
j
j+1
进行冒泡排序是正确的。
i
循环的唯一原因是确保所有元素被排序是因为每个
j
循环可能不会对多个元素进行排序。我也尝试了此解决方案,但它不起作用。j-1修复了日期问题,但ID现在是问题所在,它会使所有元素崩溃time@eduroam在按ID排序的部分中,您是否也将
j+1
替换为
j-1
可能是某些数组索引超出了范围,即小于0且大于size-1。