【问题标题】:C++ Bubble SortingC++ 冒泡排序
【发布时间】:2018-11-13 06:59:02
【问题描述】:

嘿,我从我的课堂上得到了这个算法,叫做冒泡排序。它在另一个内部使用两个“for”。但是当我尝试用“while”来做它没有工作时,它们不是等效的吗?

void bubbleSort(int v[], int n) {   // void workingBubble(int v[], int n){
  int fim = n - 1;                  //      int i, fim;
  int i = 0;                        //      for(fim=n-1; fim>0; fim--){
  int aux;                          //          for(i=0; i<fim; i++){
  while (fim > 0) {                 //              if(v[i] > v[i+1]){
      while (i < fim) {             //                  int temp = v[i];
          if (v[i] > v[i + 1]) {    //                  v[i] = v[i+1];
              aux = v[i];           //                  v[i+1] = temp;
              v[i] = v[i + 1];      //              }
              v[i + 1] = aux;       //          }
          }                         //      }
          i++;                      // }
      }                             //
      fim--;                        //
}}
                            

我评论了一个在另一个旁边工作的,所以我可以比较,我认为它是相同的,但是用 while 而不是 for

数组 = {10, 2, 8, 11, 5, 3, 27, 1}

冒泡排序后的数组 = {2, 8, 10, 5, 3, 11, 1, 27}

【问题讨论】:

    标签: c++ arrays sorting bubble-sort


    【解决方案1】:

    每次在内循环之前将i重置为0:

    void bubbleSort(int v[], int n) {
      int fim = n - 1;
      int i;
      int aux;
      while (fim > 0) {
          i = 0;
          while (i < fim) {
              if (v[i] > v[i + 1]) {
                  aux = v[i];
                  v[i] = v[i + 1];
                  v[i + 1] = aux;
              }
              i++;
          }
          fim--;
      }
    }
    

    【讨论】:

    • 天啊,我现在看到了。我想我只是累了,看不到这一点。谢谢!
    猜你喜欢
    • 2014-03-26
    • 1970-01-01
    • 2014-02-25
    • 2017-06-21
    • 2012-07-19
    • 2015-09-06
    • 2013-03-09
    • 2013-01-23
    • 2013-03-27
    相关资源
    最近更新 更多