在Java中反转数组
给定一个数组,任务是在Java中反转给定的数组。
例子:
Input : 1, 2, 3, 4, 5
Output :5, 4, 3, 2, 1
Input : 10, 20, 30, 40
Output : 40, 30, 20, 10
要了解 Array 的基础知识,请参阅 Array 数据结构。
方法
在Java中有许多方法可以反转数组。这些都是:
- 使用临时数组
- 使用交换
- 使用 Collections.reverse() 方法
- 使用 StringBuilder.append() 方法
1.使用临时数组
第一种方法如下:
- 输入数组的大小和数组的元素。
- 考虑一个函数reverse,它接受参数——数组(比如 arr)和数组的大小(比如 n)。
- 在函数内部,一个新数组(具有第一个数组的数组大小,arr)被初始化。数组arr[]是从第一个元素开始迭代的,数组arr[]的每个元素从后面依次放入新数组中,即新数组是从最后一个元素开始迭代的。
- 这样,数组 arr[] 的所有元素都被反向放置在新数组中。
- 此外,我们可以从头开始遍历新数组并打印数组的元素。
Java
// Basic Java program that reverses an array
public class reverseArray {
// function that reverses array and stores it
// in another array
static void reverse(int a[], int n)
{
int[] b = new int[n];
int j = n;
for (int i = 0; i < n; i++) {
b[j - 1] = a[i];
j = j - 1;
}
// printing the reversed array
System.out.println("Reversed array is: \n");
for (int k = 0; k < n; k++) {
System.out.println(b[k]);
}
}
public static void main(String[] args)
{
int [] arr = {10, 20, 30, 40, 50};
reverse(arr, arr.length);
}
}
Java
// Java Program that reverses array
// in less number of swaps
public class arrayReverse {
// function swaps the array's first element with last
// element, second element with last second element and
// so on
static void reverse(int a[], int n)
{
int i, k, t;
for (i = 0; i < n / 2; i++) {
t = a[i];
a[i] = a[n - i - 1];
a[n - i - 1] = t;
}
// printing the reversed array
System.out.println("Reversed array is: \n");
for (k = 0; k < n; k++) {
System.out.println(a[k]);
}
}
public static void main(String[] args)
{
int[] arr = { 10, 20, 30, 40, 50 };
reverse(arr, arr.length);
}
}
Java
// Reversing an array using Java collections
import java.util.*;
public class reversingArray {
// function reverses the elements of the array
static void reverse(Integer a[])
{
Collections.reverse(Arrays.asList(a));
System.out.println(Arrays.asList(a));
}
public static void main(String[] args)
{
Integer [] arr = {10, 20, 30, 40, 50};
reverse(arr);
}
}
Java
// Java Program for Reversing an array using StringBuilder
import java.util.Arrays;
class GFG {
public static void main (String[] args) {
String[] arr = {"Hello", "World"};
StringBuilder reversed = new StringBuilder();
for (int i = arr.length; i > 0; i--) {
reversed.append(arr[i - 1]).append(" ");
};
String[] reversedArray = reversed.toString().split(" ");
System.out.println(Arrays.toString(reversedArray));
}
}
输出
Reversed array is:
50
40
30
20
10
2.使用交换
第二种方法使用类似的代码来输入和打印数组。但是,我们不会像上面的方法那样创建一个新数组。相反,我们反转原始数组本身。在这个方法中,我们交换数组的元素。第一个元素与最后一个元素交换。第二个元素与最后一个元素交换,依此类推。
例如,考虑数组 [1, 2, 3, ...., n-2, n-1, n]。我们用 n 交换 1,用 n-1 交换 2,用 n-2 交换 3 等等。
Java
// Java Program that reverses array
// in less number of swaps
public class arrayReverse {
// function swaps the array's first element with last
// element, second element with last second element and
// so on
static void reverse(int a[], int n)
{
int i, k, t;
for (i = 0; i < n / 2; i++) {
t = a[i];
a[i] = a[n - i - 1];
a[n - i - 1] = t;
}
// printing the reversed array
System.out.println("Reversed array is: \n");
for (k = 0; k < n; k++) {
System.out.println(a[k]);
}
}
public static void main(String[] args)
{
int[] arr = { 10, 20, 30, 40, 50 };
reverse(arr, arr.length);
}
}
输出
Reversed array is:
50
40
30
20
10
3. 使用 Collections.reverse() 方法
第三种方法是使用函数Java.util.Collections.reverse(List list)方法。此方法反转指定列表中的元素。因此,我们首先使用Java.util.Arrays.asList(array)将数组转换为列表,然后将列表反转。
Java
// Reversing an array using Java collections
import java.util.*;
public class reversingArray {
// function reverses the elements of the array
static void reverse(Integer a[])
{
Collections.reverse(Arrays.asList(a));
System.out.println(Arrays.asList(a));
}
public static void main(String[] args)
{
Integer [] arr = {10, 20, 30, 40, 50};
reverse(arr);
}
}
输出
[50, 40, 30, 20, 10]
4. 使用 StringBuilder.append() 方法
作为第四种方法,如果您正在使用 String 数组,我们可以使用 StringBuilder 并为每个数组元素附加一个从数组长度递减的 for 循环,将 StringBuilder 转换为字符串,然后拆分回数组。
Java
// Java Program for Reversing an array using StringBuilder
import java.util.Arrays;
class GFG {
public static void main (String[] args) {
String[] arr = {"Hello", "World"};
StringBuilder reversed = new StringBuilder();
for (int i = arr.length; i > 0; i--) {
reversed.append(arr[i - 1]).append(" ");
};
String[] reversedArray = reversed.toString().split(" ");
System.out.println(Arrays.toString(reversedArray));
}
}
输出
[World, Hello]