Algorithm 算法:将元素分布到彼此远离的地方
我有一个排序整数数组。给定一个整数N,我需要把N个最大的元素放得离彼此更远,这样它们之间就有了最大的空间。其余的元素应该放在这些大项目之间。例如,N=3的10数组将导致[0,5,8,2,6,9,3,7,10,4]Algorithm 算法:将元素分布到彼此远离的地方,algorithm,sorting,Algorithm,Sorting,我有一个排序整数数组。给定一个整数N,我需要把N个最大的元素放得离彼此更远,这样它们之间就有了最大的空间。其余的元素应该放在这些大项目之间。例如,N=3的10数组将导致[0,5,8,2,6,9,3,7,10,4] publicstaticvoidmain(字符串[]args){ int[]start={10,9,8,7,6,5,4,3,2,1}; int[]end=新的int[10]; int N=4; int步长=数学圆(start.length/N); int y=0; 整数计数=0; 对于
publicstaticvoidmain(字符串[]args){
int[]start={10,9,8,7,6,5,4,3,2,1};
int[]end=新的int[10];
int N=4;
int步长=数学圆(start.length/N);
int y=0;
整数计数=0;
对于(int i=0;i 对于(int j=i;j您有一个K
元素数组。您有N
需要分配的最大数量。然后:
步骤:=K/N
(删除剩余部分)
从N
最大值中取任意数字,并将其插入步骤/2
位置
取其他最大值,并在步数
距离处插入上一个插入的最大值之后
给出[1,2,3,4,5,6,7,8,9,10]
.SoK=10
,N=3
。然后Step=3
。因此第一个最大值位于3/2
位置
[1,10,2,3,4,5,6,7,8,9]
然后将其他2
放置在彼此之间的3
距离处:
[1,10,2,3,9,4,5,8,6,7]
守则:
std::vector Distribute(std::vector A源,整数)
{
auto step=aSource.size()/aNumber;//注意整数除法。
对于(int i=0;istd::这听起来像是一个家庭作业。展示你所做的尝试,然后社区会帮助你了解你的错误所在。那么为什么不[8,0,1,2,3,9,4,5,6,7,10]
呢?你使用循环索引吗?数组[0]是最大的数字,数组按降序排序。@Sean请参见上面我的代码Java@Angelina,这个解不能处理零。它的复杂度是n平方。step/2不能给出整数,它需要是array@Angelina,正如我在文章中指出的,余数不使用。2从何而来de>步骤/2
?为什么是2?@Angelina,不是2。它是1。在编程中,我们通常从0开始计数。真有趣!哈哈
6, 5, 4, 7, 3, 2, 1, 0, 8, -1, -2, -3, -4, 9, -5, -6, -7, -8, 10, -9, -10,