以下のように配列を初期化する簡単なソートプログラムを作成しました。
int a[]={9,4,7,8,5,2,6,1,0,3};
しかし、私のソート関数は配列 a[0] を a[7] にソートし、0 を '\0' のように扱って停止します。他の場所に 0 を配置すると、0 までソートされ、残りの配列は無視されます。C は 0 と '\0' をここで同じように扱っていますか?
私のバブルソートプログラムは以下の通りです。
#include<stdio.h>
#include<conio.h>
int main()
{
int a[]={9,4,7,8,5,2,6,1,0,3};
void bubble_sort(int *a);
void print(int *a);
bubble_sort(a);
print(a);
getch();
return 0;
}
void bubble_sort(int *a)
{
int i=0,j,t,n;
for(i=0;a[i]!='\0';i++)
{
n=0;
for(j=1;a[j]!='\0';j++)
{
if(a[j-1]>a[j])
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
n++;
}
}
if(n==0)
{
break;
}
}
}
void print(int a[])
{
int i=0;
for(i=0;a[i]!='\0';i++)
{
printf("%d ",a[i]);
}
printf("\n");
}