簡體   English   中英

將指向數組的指針作為函數的參數傳遞

[英]Passing pointers to an array as arguments to a function

我正在嘗試在C實現INSERTION SORT ,我認為我已經成功完成了。 但是,在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;
}

編輯在輸出屏幕上什么都不會打印。 幫我在這里找到錯誤。 謝謝 !!

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++)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM