- public class ReverseArray {
- /**
- * @定义一个函数,将数组中所有元素反转。例如:{1, 2, 3} 反转后为 {3, 2, 1}。
- */
- public static void main(String[] args) {
- // 创建一个数组
- int array[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
- //调用反转数组的方法将数组反转
- reverseArray(array);
- //输出反转以后的数组
- printArray(array);
- }
- /*
- *思路:
- * 把数组最后一个元素与第一个元素交换,倒数第二个元素与第二个元素交换,依次类推.直到把所有数组中的元素反转替换
- * 反转排序是对数组两边的元素进行替换,所以只需要循环数组长度的半数,如:数组的长度为7,只需要循环3次,就可以了
- * */
- static void reverseArray(int arr[]) { //数组的反转排序
- for (int i = 0; i < arr.length / 2; i++) { //循环length/2次,每次交换数组中的元素
- int temp = arr[i];
- arr[i] = arr[arr.length - 1 - i];
- arr[arr.length - 1 - i] = temp;
- }
- }
-
- //反转数组中的元素,并创建一个新的数组,对新数组进行赋值,将新数组的结果输出
- static void reverseArray1(int arr[]){
- int a [] = new int [arr.length];
- //计数器思想
- int count =0;
- for (int i = arr.length - 1; i >= 0; i--){
- a[count]=arr[i];
- count ++;
- }
- System.out.print("[");
- for(int i =0;i<a.length;i++){ //遍历数组中的每个元素
- //判断角标是不是最大角标,如果不是就打印元素和逗号,如果是就打印元素和"]"号
- if(i!=a.length-1)
- System.out.print(a[i]+",");
- else {
- System.out.print(a[i]+"]");
- }
- }
- }
-
- static void printArray(int arr[]) { // 输出数组的方法
- System.out.print("{"); // 首次打印左边中括号
- for (int i = 0; i < arr.length; i++) { // 遍历数组的角标
- if (i != arr.length - 1) { // 如果角标不是最后一位角标,就打印元素和逗号
- System.out.print(arr[i] + ", ");
- } else { // 否则(角标是最后一位角标),就打印元素并继续打印右边中括号
- System.out.print(arr[i] + "}");
- }
- //把上面的if .. else语句可以改写成下面的三元运算符形式
- //System.out.print(i==arr.length-1?arr[i]+"}":arr[i]+",");
- }
- }
- }
复制代码 |