C++ 冒泡排序

标签 c++ arrays sorting bubble-sort

嘿,我从名为冒泡排序的类(class)中学到了这个算法。它在另一个内部使用了两个“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

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

Array after bubble sort = {2, 8, 10, 5, 3, 11, 1, 27}

最佳答案

每次在内循环之前将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--;
  }
}

关于C++ 冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50672144/

相关文章:

c++ - shared_ptr<> 如何安全地允许转换为 bool?

java - 如何打印二维数组的结果

python - 以特定方式对文件进行排序

mysql - 在 MySQL 中按数字顺序排序,然后按字母顺序排序

javascript - 为什么冒泡排序的 Javascript 实现比其他排序算法快得多?

c++ - 使用 glibc 2.7 编译包含路径失败

c++ - "cannot Convert vector<int>* to int"是什么意思?

c++ - malloced 数组和新数组之间有区别吗

javascript - 如何创建具有特定渐变分布的 HTML 颜色数组?

具有全局变量的 C++ 多线程