将一个数组长度为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<stdio.h>
//转置数组
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");
}

运行结果