#include<stdio.h>
#include<iostream>
using namespace std;
//数组中有n个元素将其顺序后移k位 01234->23401 k=3
void OrderMove1();
void OrderMove2();
void OrderMove3();
int main ()
{
OrderMove1();
OrderMove2();
OrderMove3();
}
void OrderMove1()
{
int N = 6;
int num[N] = {1, 2, 3, 4, 5, 6};
int k = 3;//元素循环移动k位
int t[N];//必须要开一个辅助数组!!!不可以直接将原数组的元素进行交换
//因为无法确定循环执行次数有可能会出现将已经一定的元素重新交换
for(int i = 0; i < N; i++)
{
t[(i + k) % N] = num[i];//直接将元素放入辅助数组的正确位置
}
for(int i = 0; i < N; i++)
cout << t[i] << " ";
cout << endl;
}
void OrderMove2()//没有开辟新的辅助数组 但是进行多次循环
{
int N = 6;
int num[N] = {1, 2, 3, 4, 5, 6};
int k = 3;//元素循环移动k位
int t;
for(int i = 0; i < k; i++)//移动k次就进行k次循环
{
t = num[N - 1];//实质是将末尾元素保留 然后将前边的元素依次向后拷贝 最
[算法设计与分析]3.4.2最大公约数的应用(循环移动数组元素)
最新推荐文章于 2023-02-01 11:30:57 发布