冒泡排序由于某种原因不起作用

时间:2014-04-13 19:14:37

标签: c++ algorithm bubble-sort

我试着在C ++中编写基本的bubblesort,现在我被卡住了。任何想法为什么可能不起作用?我认为这对于更有经验的人来说是显而易见的,但不适合我。

liczba_liczb是数组单元格的数量,niePosort是数组。

cout<<"\n\nRozpoczynam sortowanie:";
    for(int i=0;i<liczba_liczb-1;i++){  

        for(int j=0;j<liczba_liczb-1-i;j++){

            if(niePosort[j]>niePosort[j+1]){

                cout<<"\n"<<niePosort[j]<<">"<<niePosort[j+1]<<", zamiana.";

                temp = niePosort[j+1];
                niePosort[j+1]=niePosort[j];
                niePosort[j] = temp;
            }
        }

    }

2 个答案:

答案 0 :(得分:1)

我不明白你的意思是说代码不起作用。我尝试了它,它的工作原理。为简单起见,我只更改了数组名称。

#include <iostream>

int main() 
{
   const size_t N = 10;
   int a[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };

   for ( size_t i = 0; i < N - 1; i++ )
   {  
      for ( size_t j = 0; j < N - 1 - i; j++ )
      {
         if ( a[j] > a[j+1] )
         {
            int temp = a[j+1];
            a[j+1] = a[j];
            a[j] = temp;
         }
      }
   }

   for ( int x : a ) std::cout << x << ' ';
   std::cout << std::endl;
}

输出

0 1 2 3 4 5 6 7 8 9

这就是代码按升序对数组进行排序。

答案 1 :(得分:0)

事实证明,将循环条件更改为:

就像这样简单

for(int i=0;i<liczba_liczb;i++)

for(int j=0;j<liczba_liczb-1-i;j++)

不幸的是,有人删除了他的评论。