0

INSERTION SORTここで実装しようとしていますがC、これは成功したと思います。ただし、に問題がありpassing arrays as argumentsます。

つまり、関数に渡される元の配列にinsertion_sortは、並べ替えられた配列自体の要素が含まれている必要があります。

#include<stdio.h>

int * insertion_sort(int *a,int length)
{
    int j;
    for(j=1;j<length;j++)
    {
        int i,key=a[j];
        for(i=j-1;j>=0;j--)
        {
            if(a[i]<=key)
                break;
            a[i+1]=a[i];
        }  
        a[i+1]=key;
    }

    return *a;
}

int main(void)
{
    int a[]={10,12,7,6,9,8};
    insertion_sort(a,6);
    int i;    
    for(i=0; i<6; i++)
       printf("%d\n", a[i]);

    return 0;
}

EDIT 出力画面には何も表示されません。ここでバグを見つけるのを手伝ってください。ありがとう !!

4

1 に答える 1

4

1.おそらくi内側のループで使用するつもりでした:

変化する:

for(i=j-1;j>=0;j--) 
          ^^   ^^

に:

for(i=j-1;i>=0;i--)

2. 元の配列が変更されるため、何も返す必要はありません (これは、返された値を無視するためです)。

3. 配列インデックスは 0 から始まります。外側のループを次のように変更します。 for(j=0;j<length;j++)

于 2013-03-03T05:01:22.797 に答える