算法的一些小栗子6(递归算法)
来源:互联网 发布:侠客风云传前传优化 编辑:程序博客网 时间:2024/05/21 14:57
二分查找
//二分查找public class BinarySearch { //采用递归 public int search(int elem, int[] a, int low, int high) { if (low > high) { return -1; } int middle = (low + high) / 2; if (a[middle] == elem) { System.out.println("使用递归二分查找找到元素" + a[middle] + "下标为" + middle); return middle; } if (a[middle] < elem) { return search(elem, a, middle + 1, high); } if (a[middle] > elem) { return search(elem, a, low, middle - 1); } return -1; } //不采用递归 public int search2(int elem, int[] a) { int low = 0; int high = a.length; while (low <= high) { int middle = (low + high) / 2; if (elem > a[middle]) { low = middle + 1; } if (elem < a[middle]) { high = middle - 1; } if (elem == a[middle]) { System.out.println(a[middle]); System.out.println("使用非递归二分查找找到元素" + a[middle] + "下标为" + middle); return middle; } } return -1; } public static void main(String[] args) { int[] a = {3, 5, 2, 34, 24, 33, 19, 55, 64, 42}; Arrays.sort(a); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(); BinarySearch binarySearch = new BinarySearch(); binarySearch.search(33, a, 0, a.length); binarySearch.search2(34, a); }}
汉诺塔
//汉诺塔递归public class HanNota { private int i = 1; public void hanNota(int n, char from, char dependOn, char to) { if (n == 1) { move(1, from, to); } else { hanNota(n - 1, from, to, dependOn); move(n, from, to); hanNota(n - 1, dependOn, from, to); } } private void move(int n, char from, char to) { System.out.println("第" + i++ + "步从" + from + "------->" + to); } public static void main(String[] args) { HanNota hanNota = new HanNota(); hanNota.hanNota(70, 'A', 'B', 'C'); }}
欧几里得求最大公约数
//欧几里得求最大公约数public class Gcd { public int gcd(int m, int n) { if (n == 0) { return m; } else { return gcd(n, m % n); } } public static void main(String[] args) { Gcd gcd = new Gcd(); int x = gcd.gcd(36, 24); System.out.println("最大公约数为:" + x); }}
阅读全文
0 0
- 算法的一些小栗子6(递归算法)
- 算法的一些小栗子7(贪心算法)
- 算法的一些小栗子8(分治算法)
- 算法的一些小栗子9(动态规划算法)
- 算法的一些小栗子10(回溯算法)
- 算法的一些小栗子1(插入排序)
- 算法的一些小栗子2(选择排序)
- 算法的一些小栗子3(交换排序)
- 算法的一些小栗子4(归并排序)
- 算法的一些小栗子5(基数排序)
- 递归小栗子
- java的递归小算法
- 一些递归算法的实现
- 递归算法的一些实例
- 关于java反射的一些小栗子
- 一些小算法的研讨
- 堆栈的一些小算法
- 递归算法小例子
- 通过JDBC连接SQL Server
- 多线程二
- 拷贝构造函数的调用
- Bootstrap-导航栏组件
- Java设计模式之解释器模式
- 算法的一些小栗子6(递归算法)
- Anaconda安装
- Maven学习总结系列四:坐标与依赖
- 数据结构与算法分析-C语言描述 3.4 交集
- 隐式动画的性能瓶颈
- 你真的会写Java吗?
- React中的Diff算法——Christopher Chedeau(原文翻译)
- py2neo3.0 批处理方案
- 【Java GUI】图形用户接口总结(2)