用于重新排列给定列表的Java程序,使其由交替的最小最大元素组成
给定一个整数列表,重新排列列表,使其仅使用列表操作由交替的最小-最大元素组成。列表的第一个元素应该是最小值,第二个元素应该是列表中所有元素的最大值。类似地,第三个元素将是下一个最小元素,第四个元素是下一个最大元素,依此类推。不允许使用额外的空间。
例子:
Input: [1 3 8 2 7 5 6 4]
Output: [1 8 2 7 3 6 4 5]
Input: [1 2 3 4 5 6 7]
Output: [1 7 2 6 3 5 4]
Input: [1 6 2 5 3 4]
Output: [1 6 2 5 3 4]
这个想法是首先按升序对列表进行排序。然后我们开始从列表末尾弹出元素并将它们插入到列表中的正确位置。
下面是上述想法的实现——
Java
// Java program to rearrange a given list
// such that it consists of alternating
// minimum maximum elements
import java.util.*;
class AlternateSort
{
// Function to rearrange a given list
// such that it consists of alternating
// minimum maximum elements using LinkedList
public static void alternateSort(LinkedList ll)
{
Collections.sort(ll);
for (int i = 1;
i < (ll.size() + 1)/2; i++)
{
Integer x = ll.getLast();
ll.removeLast();
ll.add(2*i - 1, x);
}
System.out.println(ll);
}
public static void main (String[] args) throws java.lang.Exception
{
// Input list
Integer arr[] = {1, 3, 8, 2, 7, 5, 6, 4};
// Convert array to LinkedList
LinkedList ll =
new LinkedList(Arrays.asList(arr));
// Rearrange the given list
alternateSort(ll);
}
}
输出:
1 8 2 7 3 6 4 5
请参阅有关重新排列给定列表的完整文章,使其包含交替的最小最大元素以获取更多详细信息!