数组换位

将一个数组长度为n,从位置k开始,交换a[0:k-1]与a[k:n-1]的位置,得到新的数组。
例如,输入 5(数组长度) 3(第三个数字) 3 4 5 6 1
得到交换后的结果是:6 1 3 4 5

  • 解题思路
    将数组进行在某个位置转置,则先将每一部分转置,再将整体换位
    上面的示例可以为:
    3 4 5 --> 5 4 3
    6 1 ---> 1 6
    5 4 3 1 6 --> 6 1 3 4 5(5\6互换 4\1互换)

具体代码如下:

#include
//转置数组 
void sort(int a[], int low, int high){
    int temp;
    while(low < high)
    {
        temp = a[low];
        a[low++] = a[high];
        a[high--] = temp;
    }
}
void main()
{
    printf("请输入数组长度");
    int i,k,num;
    scanf("%d",&num);
    int a[num];
    printf("请输入数据\n");
    for(i = 0; i < num; i++)
    {
        scanf("%d",&a[i]);
    }
    printf("请输入要转置K的位置\n");
    scanf("%d",&k);
    sort(a,0,k-1);
    sort(a,k,num-1);
    sort(a,0,num-1);
    for(i = 0; i < num; i++)
    {
            printf("%d ", a[i]);
    }
    printf("\n");

}
运行结果

你可能感兴趣的:(数组换位)