編譯環境 xcode
#include
int main(int argc, const char * argv[]) {
int k,i,j,a[4],m;
printf("請輸入4個不同的數字\n");
for (i=0;i<4;i++)
scanf("%d",&a[i]);
for(i=0;i<4;i++)
{
for(j=0;j<4-i;j++)
if(a[j]>a[j+1])
{k=a[j];a[j]=a[j+1];a[j+1]=k;}
}
printf("此數組從小到大排列為:");
for(i=0;i<4;i++)
printf("%d ",a[i]);
printf("請再額外輸入一個與以上數字都不相同的數字“,這個數字將依序插入已經排列好的數組中\n");
int b[5],*pa,*pb;
pa=a;pb=b;
for(i=0;i<4;i++)
*(pb+i)=*(pa+i);
//b[i]=a[i];
scanf("%d",&b[4]);
for(i=0;i<5;i++)
{for(j=0;j<5-i;j++)
if(b[j]>b[j+1])
{m=b[j];b[j]=b[j+1];b[j+1]=m;}
};
for(i=0;i<5;i++)
printf("%d ",b[i]);
return 0;
}
簡單的來說就是2個冒泡法,第一個冒泡法正常,
第二個運行結果總會出現一個0來取代之前輸入的最大數字,實在不知道問題出在哪裡。。。求指點
第一個排序的算法已經錯了!
當 i = 0 時,j 已經等於 3 了,再 加 1 時對於數組 a 來說已經越界了。
被你誤導了!你的排序算法有問題的。