数组的反转
Posted yangbocsu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组的反转相关的知识,希望对你有一定的参考价值。
数组的反转
逆序前:[19, 4, 23, 27, 15, 18]
逆序后:[18, 15, 27, 23, 4, 19]
【参考代码1.0】
package com.yangbocsu.yanghuisanjiao;
import java.util.Arrays;
import java.util.Random;
public class yanghui {
public static void main(String[] args) {
int[] arr = new int[6];
for (int i = 0; i < arr.length; i++)
{
arr[i] = (int)(Math.random()*(30-1)+1) ;
}
System.out.println("逆序前:"+Arrays.toString(arr));
if (arr.length % 2 ==0) //偶数个数时
{
int mid = (arr.length-1)/2;
int temp;
for (int i = mid; i >=0 ; i--)
{
temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
}
else //奇数数个数时
{
int mid = arr.length/2;
int temp;
for (int i = mid - 1; i >=0 ; i--)
{
temp = arr[i];
arr[i] = arr[arr.length - 1 -i];
arr[arr.length - 1 -i] = temp;
}
}
System.out.println("逆序后:"+Arrays.toString(arr));
}
}
【参考代码1.1】
package com.yangbocsu.yanghuisanjiao;
import java.util.Arrays;
import java.util.Random;
public class yanghui {
public static void main(String[] args) {
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) //数组赋值
{
arr[i] = (int)(Math.random()*(30-1)+1) ;
}
System.out.println("逆序前:"+Arrays.toString(arr));
int mid;
int temp;
int length = arr.length;
// if (length % 2 ==0) //偶数个数时
// mid = (length-1)/2;
// else //奇数数个数时
// mid = length/2 - 1;
mid = (length % 2 == 0) ? (length-1)/2 : length/2 - 1;
for (int i = mid ; i >=0 ; i--) //逆序处理,从中间开始分
{
temp = arr[i];
arr[i] = arr[arr.length - 1 -i];
arr[arr.length - 1 -i] = temp;
}
System.out.println("逆序后:"+Arrays.toString(arr));
}
}
【参考代码2.0】
package com.yangbocsu.yanghuisanjiao;
import java.util.Arrays;
import java.util.Random;
public class yanghui {
public static void main(String[] args) {
int[] arr = new int[6];
for (int i = 0; i < arr.length; i++) //数组赋值
{
arr[i] = (int)(Math.random()*(30-1)+1) ;
}
System.out.println("逆序前:"+Arrays.toString(arr));
//其实没有必要进行奇偶数判断; 0 1 2 3 4 0 1 2 3 4 5
//mid = 5/2 = 2 i = 0 1
//mid = 6/2 = 3 i = 0 1 2
for (int i = 0 ; i < arr.length/2 ; i++) //逆序处理,从中间开始分
{
int temp = arr[i];
arr[i] = arr[arr.length - 1 -i];
arr[arr.length - 1 -i] = temp;
}
System.out.println("逆序后:"+Arrays.toString(arr));
}
}
【参考代码2.1】
package com.yangbocsu.yanghuisanjiao;
import java.util.Arrays;
import java.util.Random;
public class yanghui {
public static void main(String[] args) {
int[] arr = new int[6];
for (int i = 0; i < arr.length; i++) //数组赋值
{
arr[i] = (int)(Math.random()*(30-1)+1) ;
}
System.out.println("逆序前:"+Arrays.toString(arr));
//前后夹击
for (int i = 0,j = arr.length - 1; i < j ; i++,j--)
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
System.out.println("逆序后:"+Arrays.toString(arr));
}
}
以上是关于数组的反转的主要内容,如果未能解决你的问题,请参考以下文章
使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化
2021-09-11:给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。反转后整数超过 32 位的有符号整数的范围就返回0,假设环境不允许存储 64 位整数(有符号或无符号)。(代码片段