使用c进行冒泡排序

时间:2018-08-15 06:31:51

标签: c sorting

我尝试使用c / c ++进行冒泡排序。它显示错误的输出。我不知道错误在哪里。

#include <stdio.h>

#define true 1
#define false 0

int main()
{
    int arr[]={26,27,2,38,44,4,19};
    int n= sizeof arr/sizeof(int);
    int swapped;
    int unsorted_index= n-1, temp;
    do{
        swapped=false;
        for(int i=0; i< unsorted_index-1; i++)
            if(arr[i]>arr[i+1])
            {
              temp=arr[i];
              arr[i]=arr[i+1];
              arr[i+1]=temp;
              swapped=true;
            }
        unsorted_index--;
      } while(swapped || unsorted_index);
    for(int i=0; i<n; i++)
       printf("%d ",arr[i]);
    return 0;
}

它显示输出: 2 4 26 27 38 44 19

代替: 2 4 19 26 27 38 44

2 个答案:

答案 0 :(得分:1)

问题是您的循环没有遍历整个数组。为此:

  

将“ unsorted_index = n-1”替换为“ unsorted_index = n”。

输出:

  

2 4 19 26 27 38 44

答案 1 :(得分:-1)

正确使用:for(int i = 0; i <= unsorted_index-1; i ++)

代替:for(int i = 0; i