數組元素交換位置(奇數號元素在前,偶數號元素在後)

將順序表(數組)中的元素a1,a2,a3,......,an變換爲奇數號元素在前,偶數號元素在後的新表,即a1,a3,a5,...a2,a4,a6....

要求儘可能高效。

這裏使用了數組模擬順序表,數組首元素爲A[0],順序表首元素爲a1,所以A[0]->a1;A[len-1]->an;

#include<stdio.h>

void Bubble_Swap(int A[],int len){
    int i=len;int v=1;int temp;
    if(len%2==0)i=len-1;
    while(i>-1){
        temp=A[i-1];
        for(int j=0;j<v;j++){
            A[i+j-1]=A[i+j];
        }
        A[i+v-1]=temp;
        i-=2;v++;
    }
}
int main(){
    int A[]={1,2,3,4,5,6,7,8,9,10};
    int len=sizeof(A)/sizeof(int);
    Bubble_Swap(A,len-1);
    for(int i=0;i<len;i++)
    printf("%d ",A[i]);
    
}

結果:

2 4 6 8 10 1 3 5 7 9 
#include<stdio.h>
 
void Bubble_Swap(int A[],int len){
    int i=len;int v=1;int temp;
    if(len%2==0)i=len-1;
    while(i>1){//i>1因爲本身A[1]就應該在第一位。
        temp=A[i-1];
        for(int j=0;j<v;j++){
            A[i+j-1]=A[i+j];
        }
        A[i+v-1]=temp;
        i-=2;v++;
    }
}
int main(){
    int A[]={0,1,2,3,4,5,6,7,8,9,10};//0用來佔位,實際元素從A[1]開始。
    int len=sizeof(A)/sizeof(int);
    Bubble_Swap(A,len-1);
    for(int i=1;i<len;i++)
    printf("%d ",A[i]);
    
}

運行結果:

1 3 5 7 9 2 4 6 8 10 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章