本文将为大家带来“自定义函数之数字后移(循环队列)”算法的一个解法与详细解释,方法不唯一,本篇文章只列举出一种方法,可以先练习,练习之后查看代码,这样更加有助于提高
文章目录
一、题目
题目描述:
有n个整数,使前面各数顺序向后移m个位置,
最后m个数变成前面m个数。
写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。
输入:
输入数据的个数n n个整数 移动的位置m
输出:
移动后的n个数
样例输入:
10
1 2 3 4 5 6 7 8 9 10
2
样例输出:
9 10 1 2 3 4 5 6 7 8
运行结果:
以下是本题的解题思路,仅供参考。
二、解题思路
本题利用循环队列取模进行求解,先解释以下什么是循环队列。
(1)循环队列:循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。
循环队列可以更简单防止伪溢出的发生,但队列大小是固定的。
接下来看两张图
(3)关键代码:
arr[i]=number[(i+n-m)%n];
思路:根据位置后移的数,来找到队尾要重新插入队列的数据,将数据从对尾从队首开始一次插入,最终实现循环队列。
例如:移动2位就是从倒数第二位开始依次赋值。
移动3位就是从倒数第三位开始依次赋值
以此类推。。。。
三、代码(含详细注解)
package main;
import java.util.