💀来了奥💀
介绍:
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
思路:
(1)把数组下标从0到k的数进行首尾调换
(2)把数组下标从k到n-1的数进行首尾调换
(3)把数组下标从0到n-1的数进行首尾调换
这里给出最优解(其他方法太辣鸡)
#include<stdio.h>
#include<stdlib.h>
void my_move(int arr[],int left,int right)//交换首尾数
{
while(left<right)
{
int t=arr[left];
arr[left]=arr[right];
arr[right]=t;
left++;
right--;
}
}
void my_sort(int arr[],int n,int k) //调用
{
if(k>n) //不能超出范围
k%=n;
my_move(arr,0,k-1);
my_move(arr,k,n-1);
my_move(arr,0,n-1);
}
int main()
{
int arr[100];
int n,k;
scanf("%d%d",&n,&k);
for(int i=0; i<n; i++)
scanf("%d",&arr[i]);
my_sort(arr,n,k);
for(int i=0; i<n; i++)
printf("%d ",arr[i]);
return 0;
}
例:
小伙伴自己也试试
下期见