C++ 我似乎无法调试我的代码,在尝试调试时for循环将我踢出
问题在于您在此处使用的条件:C++ 我似乎无法调试我的代码,在尝试调试时for循环将我踢出,c++,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];
#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;
}
类似地,这里使用n-i-1
除此之外,从一个好的资源验证您是否正确地实现了它
请参见:您可以调试代码。在调试器中观察表达式1-n的值。您已成功发现错误在于循环将您踢出。
for (int i=0; i<1-n; i++)
for (int j=i+1; j<1-i-n; j++)
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;
}
}
}