冒泡排序程序(输出错误)

时间:2015-10-05 09:27:18

标签: sorting

//你好,我刚刚编写这个程序,我无法弄清楚为什么我的输出打印不正确。答案应该是1,2,3,4,6但它打印的是2,1,4,3,6。谢天谢地。

#include <iostream>
using namespace std;

void bubblesort(int A[], int n)

{

for (int i =1; i< n-1; i++)

{

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

if(A[i] > A[i+1])
        {
            swap(A[i], A[i+1]);
        }
    }
}
}

int main()
{
int A[] = {2,4,1,6,3};
bubblesort(A,5);
    for(int i =0; i<5; i++)
    {
        cout<<A[i]<<" ";
    }
}

1 个答案:

答案 0 :(得分:0)

你没有正确地编写外部循环并与变量j交换,如下面的代码所示。

#include <iostream>

using namespace std;



//Bubble Sort 

void bubble_sort (int arr[], int n)

 {

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

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

      if (arr[j] > arr[j + 1])

     {

        int temp = arr[j];

        arr[j] = arr[j + 1];

        arr[j + 1] = temp;

      }

  }     



//Driver Function

int main()

{

  int input_ar[] = {10, 50, 21, 2, 6, 66, 802, 75, 24, 170};

  int n = sizeof (input_ar) / sizeof (input_ar[0]);

  bubble_sort (input_ar, n);

  cout << "Sorted Array : " << endl; 

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

    cout << input_ar[i] << " ";

  return 0;

}