数组逆转的几种方式
来源:互联网 发布: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
- 数组逆转的几种方式
- 数字逆转的几种方式,(略有区别)
- 字符数组或字符串逆转的几种方法
- 原创:字符串和语句逆转的几种方式,可以任意组合,java实现
- 数组的逆转
- 数组初始化的几种方式;
- JS数组克隆的几种方式
- javascript创建数组的几种方式
- C# 拷贝数组的几种方式
- Java创建数组的几种方式
- javascript创建数组的几种方式
- 数组的几种排序方式
- 数组去重的几种方式
- Java创建数组的几种方式
- java8 遍历数组的几种方式
- java8 遍历数组的几种方式
- Java创建数组的几种方式
- java8 遍历数组的几种方式
- sublime2使用过程中遇到的一些问题总结
- bootstrap-内联表单 水平(横向)表单 响应式图片 辅助类
- 第二层---策略模式
- 关于python3里gbk编码的问题解决
- 机器学习实战——SVM(3/3)
- 数组逆转的几种方式
- Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音
- OGG rep进程启动遇到sys.dbms_streams_adm_utl_invok.SET_FOO_TRIGGER_SESSION_CONTXT (fire=>TRUE);
- 2015年5月17日 算是第一天
- ios&mac下编译protobuf C++静态库
- bnu 45517
- MySQL技术站
- ruby环境搭建 CocoaPods安装 使用
- 图片中数字的分割