c ++冒泡排序与基数排序

时间:2015-06-10 11:30:58

标签: c++ arrays sorting bubble-sort

我一直致力于这个项目的项目。一切都运行良好但我的冒泡排序有问题。我跑了并显示了函数的结果,但每隔一段时间它就会显示负数,但它不应该显示。并且每隔一段时间它就不能正确排序,这意味着我的冒泡排序功能并没有按顺序对它们进行排序。

InputStream

1 个答案:

答案 0 :(得分:1)

代码中的问题:

  1. 您的while循环。你不会在循环中做出任何破坏条件。
  2. 解决方案:使用您自己的首选破坏条件。类似的东西:

    while ( true )
        {
            cin >> a;
            if(a == 'y' || a == 'Y') {
                //your array init and bubblesrt method calling here
            } else {
               break;
            }
        }
    
    1. bubbleSort循环(!)中使用未初始化的数组调用for
    2. <强>解决方案:

      bubbleSort方法调用到for循环之外,

      for ( size_t i = 0; i < temp; i++ )
         {
            A1 = ( rand ( ) % temp ) + 1 ;           
            array [ i ] = A1;            
         }
      bubbleSort ( array );
      

      以下是&#39;证明&#39;实现完美的bubbleSort()方法实现:

      #include <iostream>
      #include <cstdlib>
      #include <ctime>
      
      using std::cout;
      using std::cin;
      using std::endl;
      
      int const TEMP = 4;
      
      void bubbleSort ( int array [ TEMP ] );
      
      
      int main ( )
      {
          int array [ TEMP ] = {3,2,-1,0}; // a simple demonstration
          bubbleSort(array);
      
          for (int i = 0; i < TEMP; i++) {
              cout<< array[i];
          }
          return 0;
      }
      
      void bubbleSort(int array[TEMP]) {
      int temp;
      for (int i = 0; i < TEMP -1; i++) {
          for (int j = 0; j < TEMP -i - 1; j++) {
              if (array[j] > array[j + 1]) {
                  temp = array[j];
                  array[j] = array[j + 1];
                  array[j + 1] = temp;
              }
          }
      }
      

      输出是:

        

      -1023

      干杯!