将长度为n的数组的前端k个元素保持原序移动到数组后端
//问题:将长度为n的数组的前端k个元素保持原序移动到数组后端
// 思路:把前k个元素的最后一个元素与数组的最后一个元素交换,前k个元素的倒数第二个元素与数组的倒数第二个元素交换,以此类推。
#include "stdio.h"
void KMove(int a[],int k,int n){ //参数:数组a,前k个元素,数组长度
int tmp;
for(int i=k-1,j=n-1; i>=0,j>=n-k; i--,j--){ //i的从k个元素的最后一个元素开始,j从数组的最后一个元素开始。往前走
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
int main(){
int n=10;
int a[n];
for(int i=0;i<10;i++) a[i] = i; //原本是01234 56789
KMove(a,5,n); //移动后变成56789 01234
for(int i=0;i<10;i++) printf("%d ",a[i]);
getchar();
return 0;
}