算法-JAVA实现
Timmy_zzh
这个作者很懒,什么都没留下…
展开
-
冒泡排序-java实现
/** * 冒泡排序:相邻元素两两比较,每趟都将最大元素调整到最后面 * 稳定的排序算法 */public class BubbleSort { public void bubbleSort(int[] a) { for (int i = a.length-1; i > 0; i--) { for (int j = 0; j i; j++) { if (a[j] > a[j + 1]原创 2016-11-24 10:06:10 · 361 阅读 · 0 评论 -
贪心算法-背包算法-java实现
/** * 贪心算法-背包算法: */public class Backpack { // 现有一个背包容量150kg // 有一个宝藏里面有很多物品,物品的重量和价值分别为: // 25kg--20 // 30kg--40 // 60kg--45 // 35kg--50 // 20kg--10 // 50ke--45 // 40ke--50 private int[] weights = new原创 2016-11-26 14:35:20 · 5540 阅读 · 0 评论 -
穷举法-柏松分酒
/** * 穷举法:泊松分酒 * * @author timmy1 * */public class ShareWine { private int cup1 = 12;// 第一个杯子的容量 private int cup2 = 8;// 第二个杯子容量 private int cup3 = 5;// 第三个杯子容量 private int result = 6;// 目标酒量 // 假设有三原创 2016-11-24 13:00:37 · 1158 阅读 · 0 评论 -
递归算法-求n的阶乘,超能生兔子-java实现
/** * 递归算法 * @author timmy1 * */public class Recursion { /** * 求n的阶乘 * @param n */ public int factorial(int n){ if(n == 1){ return 1; }else{ return n*factorial(n-1); } } /** * 超能生兔子 * @pa原创 2016-11-24 12:57:56 · 1825 阅读 · 0 评论 -
递归算法-求最大公约数-java实现
/** * 递归算法:求最大公约数,根据欧几里德知道-》m和n(m > n)的最大公约数 = n 和m%n的最大公约数 * * @author timmy1 * */public class GreatestCommonDivisor { public int getGCD(int m, int n) { if (n == 0) { return m; } else { return原创 2016-11-24 12:57:15 · 7761 阅读 · 0 评论 -
希尔排序-java实现
/** * 不稳定排序 * 希尔排序:设置增量为数组长度的一半,每次迭代减少为上一次的一半,找到选出的几个元素进行选择排序 * 直到增量为1退出循环 */public class ShellSort { private void shellSort(int[] a) { int d = a.length; while(true){ d /= 2; for(int i = 0;i+da.原创 2016-11-24 10:14:08 · 348 阅读 · 0 评论 -
堆排序-java实现
/** * 堆排序:大堆排序 1:建立大堆排序->根据公式 父节点为 i 左节点为2*i+1;右节点为:2*i+2; * 我们要进行大堆排序需要根据数组元素个数找到最后节点的父节点,从这个父节点往上进行大堆排序,要求父节点的数据比左右子节点都要大 * 2.获取到第0个元素(最大的数据),拿着这个最大的元素和数组最后的元素进行交换,然后又进行大堆排序 * */public class HeapSo原创 2016-11-24 10:15:52 · 579 阅读 · 0 评论 -
归并排序-java实现
/** * 归并排序:采用分治法 * * @author timmy1 归并排序是将一个无序的元素序列,先进行分解成只有一个数据元素的序列. 再将两个相邻的元素序列进行合并,合并后还要是有序的. */public class MergeSort { /** * 将数组进行分解,分解成只有一个元素,热后合并 * * @param a * @param left * @param rig原创 2016-11-24 10:17:25 · 349 阅读 · 0 评论 -
快速排序-java实现
/** * 快速排序: 定义数组的第一个元素为基准元素,进行所有元素的比较,比较一趟的情况是比基准数小的在左边,比基准数大的在右边.重复比较 * 不稳定排序 */public class QuickSort { public void quickSort(int[] array, int left, int right) { if (left >= right) return; int b原创 2016-11-24 10:20:02 · 443 阅读 · 0 评论 -
基数排序-java实现
/** * 基数排序 * * @author timmy1 * */public class RadixSort { /** * 实现思路:根据传入的位数进行循环: 第一遍:先循环数组中元素个位数上的数字,先根据个位数进行排序,使用二维数组进行数据存放 * 第二遍:进行元素十位数上的数字排序 * * @param array * 数组 * @param rad原创 2016-11-24 10:22:44 · 550 阅读 · 0 评论 -
插入排序(包括二分法插入排序)-java实现
/** * 插入排序:稳定的排序算法 * * @author timmy1 */public class InsertSort { /** * 直接插入排序:将元素插入到数组前面排好序的元素列 * * @param array */ public void insertSort(int[] array) { for (int i = 1; i array.length; i++)原创 2016-11-24 10:13:06 · 528 阅读 · 0 评论 -
选择排序-java实现
/** * 选择排序 选择排序的思路是:是从第一个元素和后面的元素进行比较,获取到最小的元素,进行比较交换 * 不稳定排序 */public class SelectSort { public void selectSort(int[] array) { for (int i = 0; i array.length; i++) { int temp = array[i]; for (i原创 2016-11-24 10:09:39 · 366 阅读 · 0 评论 -
分治算法-球队循环赛日程安排-java实现
/** * 分治法-球队循环赛事日程安排,球队数量最好是2的n次方,不然日程安排会出现空隙 * 采用分治法进行处理,将日程安排分成四个象限来处理 */public class RoundMatch { public void roundMatch(int[][] table, int n) { if (n == 1) { table[0][0] = 1; return; } int原创 2016-11-27 11:11:50 · 4482 阅读 · 0 评论