数组元素交换位置(奇数号元素在前,偶数号元素在后)

将顺序表(数组)中的元素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 
发布了28 篇原创文章 · 获赞 18 · 访问量 3748

猜你喜欢

转载自blog.csdn.net/Aaron_Kings/article/details/102883418