数组逆转的几种方式

来源:互联网 发布:deepin ubuntu 编辑:程序博客网 时间:2024/06/05 18:45
import java.util.Iterator;import java.util.Stack;/**  * @ClassName: ArrayReverse  * @Description: TODO * @author 帅 * @date 2015年5月17日 上午9:55:28  *   */public class ArrayReverse {    /**     * @param args     */    public static void main(String[] args) {        int[] arr = new int[]{6,93,57,9,3,1,10,24};        for(int i=0;i<arr.length;i++) {            for(int j=0;j<arr.length - i -1;j++){                if(arr[j] > arr[j+1]) {
                   // 采用按位与的方式去交换两个数值要比采用中间变量交换要高效                    arr[j] = arr[j] ^ arr[j+1];                    arr[j+1] = arr[j] ^ arr[j+1];                    arr[j] = arr[j] ^ arr[j+1];                }            }        }        for(int i=0;i<arr.length;i++) {            System.out.print(arr[i] + ",");        }        // 第一种:首尾交换法        reverse(arr, 0, arr.length-1);        System.out.println("\n");        for(int i=0;i<arr.length;i++) {            System.out.print(arr[i] + ",");        }        System.out.println("\n");        // 第二种:压栈法        Stack<Integer> stack = new Stack<Integer>();        for(int i=0;i<arr.length;i++) {            stack.push(arr[i]);            System.out.print(arr[i] + ",");        }        System.out.println("\n");        for(Iterator<Integer> it=stack.iterator();it.hasNext();){            System.out.print(it.next() + ",");        }            }    public static void reverse(int[] arr, int begin, int end) {        while(end > begin) {            int temp = arr[begin];            arr[begin] = arr[end];            arr[end] = temp;                        begin++;            end--;        }    }}

输出结果:

排序后的数组为:1,3,6,9,10,24,57,93,首尾交换法逆转数组后为:93,57,24,10,9,6,3,1,压栈法逆转数组后为:93,57,24,10,9,6,3,1,

从效率上来说:还是第一种首尾交换法要比压栈法高。

0 0
原创粉丝点击