1. 程式人生 > 其它 >131-對數字陣列進行右迴圈

131-對數字陣列進行右迴圈

技術標籤:林澤宇刷題演算法c語言

數字陣列:1234567
右迴圈3位
輸出:5671234

#include<stdio.h>
void Reverse(int* arr, int a, int b)//逆序 
{
	for(; a< b; a++, b--)
	{
		int tmp = arr[b];
		arr[b] = arr[a];
		arr[a] = tmp;
	}
}

void RightLoop(int* arr, int n, int k)
{
	k %= n;//如果k大於n,可以減少次數
	Reverse(arr, 0, n - k - 1);//前半部分逆置
Reverse(arr, n- k, n - 1);//後半部分逆置 Reverse(arr, 0, n - 1);//全部逆置 } int main() { int arr[]={1,2,3,4,5,6,7}; RightLoop(arr,sizeof(arr)/sizeof(arr[0]),3); for(int i=0;i<sizeof(arr)/sizeof(arr[0]);++i) { printf("%d",arr[i]); } return 0; }

執行結果如下
在這裡插入圖片描述

做題思路

1234567右迴圈3位
先將1234逆序 4321567
然後將567逆序 4321765

最後把4321765逆序得出:5671234