编写程序以在数组中输入整数列表,并以类似于钟摆的往复运动的方式排列它们。
- 整数列表中的最小元素必须位于数组的中心位置。
- 编号从小到大依次排列,在最小号的右边,下一个更大的号在最小号的左边,然后继续。
- 当达到更高的数字时,人像钟摆一样以往复的方式移到一侧。
例子:
Input : 1 3 2 5 4
Output :5 3 1 2 4
Explanation:
The minimum element is 1, so it is moved to the middle.
The next higher element 2 is moved to the right of the
middle element while the next higher element 3 is
moved to the left of the middle element and
this process is continued.
Input : 11 12 31 14 5
Output :31 12 5 11 14
这个想法是先对数组排序。数组排序后,使用辅助数组一个接一个地存储元素。
C++
// C++ program for pendulum arrangement of numbers
#include
using namespace std;
// Prints pendulam arrangement of arr[]
void pendulumArrangement(int arr[], int n)
{
// sorting the elements
sort(arr, arr+n);
// Auxiliary array to store output
int op[n];
// calculating the middle index
int mid = (n-1)/2;
// storing the minimum element in the middle
// i is index for output array and j is for
// input array.
int j = 1, i = 1;
op[mid] = arr[0];
for (i = 1; i <= mid; i++)
{
op[mid+i] = arr[j++];
op[mid-i] = arr[j++];
}
// adjustment for when no. of elements is even
if (n%2 == 0)
op[mid+i] = arr[j];
// Printing the pendulum arrangement
cout << "Pendulum arrangement:" << endl;
for (i = 0 ; i < n; i++)
cout << op[i] << " ";
cout << endl;
}
// Driver function
int main()
{
//input Array
int arr[] = {14, 6, 19, 21, 12};
// calculating the length of array A
int n = sizeof(arr)/sizeof(arr[0]);
// calling pendulum function
pendulumArrangement(arr, n);
return 0;
}
Java
// Java program for pendulum arrangement of numbers
import java.util.Arrays;
class Test
{
// Prints pendulum arrangement of arr[]
static void pendulumArrangement(int arr[], int n)
{
// sorting the elements
Arrays.sort(arr);
// Auxiliary array to store output
int op[] = new int[n];
// calculating the middle index
int mid = (n-1)/2;
// storing the minimum element in the middle
// i is index for output array and j is for
// input array.
int j = 1, i = 1;
op[mid] = arr[0];
for (i = 1; i <= mid; i++)
{
op[mid+i] = arr[j++];
op[mid-i] = arr[j++];
}
// adjustment for when no. of elements is even
if (n%2 == 0)
op[mid+i] = arr[j];
// Printing the pendulum arrangement
System.out.println("Pendulum arrangement:");
for (i = 0 ; i < n; i++)
System.out.print(op[i] + " ");
System.out.println();
}
// Driver method
public static void main(String[] args)
{
//input Array
int arr[] = {14, 6, 19, 21, 12};
// calling pendulum function
pendulumArrangement(arr, arr.length);
}
}
Python3
# Python 3 program for pendulum
# arrangement of numbers
# Prints pendulam arrangement of arr[]
def pendulumArrangement(arr, n):
# sorting the elements
arr.sort()
# Auxiliary array to store output
op = [0] * n
# calculating the middle index
mid = int((n-1)/2)
# storing the minimum
# element in the middle
# i is index for output
# array and j is for
# input array.
j = 1
i = 1
op[mid] = arr[0]
for i in range(1,mid+1):
op[mid+i] = arr[j]
j+=1
op[mid-i] = arr[j]
j+=1
# adjustment for when no.
# of elements is even
if (int(n%2) == 0):
op[mid+i] = arr[j]
# Printing the pendulum arrangement
print("Pendulum arrangement:")
for i in range(0,n):
print(op[i],end=" ")
# Driver function
# input Array
arr = [14, 6, 19, 21, 12]
# calculating the length of array A
n = len(arr)
# calling pendulum function
pendulumArrangement(arr, n)
# This code is contributed by
# Smitha Dinesh Semwal
C#
// C# program for pendulum
// arrangement of numbers
using System;
class Test {
// Prints pendulum arrangement of arr[]
static void pendulumArrangement(int []arr,
int n)
{
// sorting the elements
Array.Sort(arr);
// Auxiliary array to store output
int []op = new int[n];
// calculating the middle index
int mid = (n - 1) / 2;
// storing the minimum element in
// the middle i is index for output
// array and j is for input array.
int j = 1, i = 1;
op[mid] = arr[0];
for (i = 1; i <= mid; i++)
{
op[mid + i] = arr[j++];
op[mid - i] = arr[j++];
}
// adjustment for when no.
// of elements is even
if (n % 2 == 0)
op[mid + i] = arr[j];
// Printing the pendulum arrangement
Console.Write("Pendulum arrangement:");
for (i = 0 ; i < n; i++)
Console.Write(op[i] + " ");
Console.WriteLine();
}
// Driver code
public static void Main()
{
//input Array
int []arr = {14, 6, 19, 21, 12};
// calling pendulum function
pendulumArrangement(arr, arr.Length);
}
}
// This code is contributed by Nitin Mittal.
PHP
Javascript
输出:
Pendulum arrangement:
21 14 6 12 19