我似乎无法调试我的代码,在尝试调试时,for循环将我踢了出去

时间:2019-01-17 01:25:10

标签: c++

#include <stdio.h>
#include <math.h>

void bubblesort(int a[], int n)
{

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

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

            int temp =a[j];
            a[j]=a[i];
            a[i]=temp;
        }
    }
}

void printArray(int arr[], int n)
{

    int k;
    for (k=0; k < n; k++)
        printf("%d ", arr[k]);
    printf("\n");
}

/* Driver program to test insertion sort */

int main()
{

    int arr1[6] = {12, 11, 13, 5, 6, 10};
    int x = sizeof(arr1)/sizeof(arr1[0]);

    bubblesort(arr1, x);
    printArray(arr1, x);

    return 0;
}

2 个答案:

答案 0 :(得分:1)

问题是您在此处使用的条件:

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

如果n为6,则(1-n)将为-5。 i = 0的初始值。由于0 <-5为假,因此将您踢出循环。

使用n - 1

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

类似地,在这里使用n - i - 1

除此之外,从一个不错的资源中验证您是否正确实现了它。

查看此内容:https://www.geeksforgeeks.org/bubble-sort/

答案 1 :(得分:0)

for (int i=0; i<n-1; i++)
              //~~~~~ -> should be n-1 not 1-n
{

    for (int j = 0; j < n-i-1; j++)
             //~~~~~~~~~~~~ the bubble sort goes like above, 
             //you are attempting insertion sort
    {
        if (a[j] > a[j+1]) {  // you're missing if condition
        int temp =a[j];
        a[j]=a[j+1];
        a[j+1]=temp;
        }
    }
}