#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;
}
答案 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
。
除此之外,从一个不错的资源中验证您是否正确实现了它。
答案 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;
}
}
}