C語言實現整數數組的逆置算法


讀入100個整數到一個數組中,寫出實現該數組進行逆置的算法。

 

方法一:

假設100個整數讀入到數組a中,算法f1的思想是分別從數組兩端依次將對應數進行交換,
即a[i]與a[100 - i - 1]進行交換,i = 0~49。
f1所需要的輔助變量為2個整型變量i和temp,與問題的規模無關,其空間復雜度為O(l)。

代碼如下:

#include <stdio.h>

void f1(int *a, int n)
{
    int i, temp;
    for(i = 0;i <= n/2 - 1;i++)
    {
        temp = a[i];
        a[i] = a[n - i - 1];
        a[n - i - 1] = temp;
    }    
}

main()
{
    int a[100],i;
    int n = 100;

    for(i = 0;i < n;i++)
    {
        a[i] = i;
    }
    f1(a, n);

    for(i = 0;i < n;i++)
    {
        printf("%d ", a[i]);
    }

    printf("\n");
}

 

方法二:

算法f2的思想是將數組a先逆置到數組b,再從數組b復制到數組a,

需要輔助變量為1個整型變量i和大小為n=100的整型數組b(與問題的規模相關),
其空間復雜度為O(n)。

代碼如下:

#include <stdio.h>

void f2(int a[], int n)
{
    int i, b[100];
    for(i = 0;i < n;i++)
    {
        b[i] = a[n - i - 1];    
    }
        
    for(i = 0;i < n;i++)
        a[i] = b[i];
}

main()
{
    int a[100],i;
    int n = 100;

    for(i = 0;i < n;i++)
    {
        a[i] = i;
    }

    f2(a, n);

    for(i = 0;i < n;i++)
    {
        printf("%d ", a[i]);
    }

    printf("\n");

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM