算法
文章平均质量分 57
攻城狮joe
希望能和大家相互学习,相互交流,提升自己!
展开
-
贪心算法介绍以及基于golang的实现
一 贪心算法思想 贪心算法(英语:greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。 它与动态规划的区别在于:它对每个子问题的解决方案都做出选择,不能回退。动态规划则会保存以前的运算结果,并根据以前的结果对当前进行选择,有回退功能。 二 解决问题的步骤 1 创建数学模型来描述问题 2 求解的问题分成若干个子问题 3 对每一子问题求解,得到子问题的局部最优解 4 把子问题的解局部最优解合成原来解问题的一个解原创 2022-01-09 22:57:29 · 737 阅读 · 0 评论 -
三种快速排序算法以及快速排序的优化
一. 快速排序的基本思想 快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。 二. 快速排序的三个步骤 1) 选择基准:在待排序列中,按照某种方式挑出一个元素,作为 “基准”(pivot); 2) 分割操作:以该基准在序列中的实际位置,把序列分成两个转载 2015-06-27 21:29:25 · 1083 阅读 · 0 评论 -
排序算法之选择排序的思想以及Java实现
1 基本思想 选择排序的思想是,每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。2,算法的实现(Java)package Algorithm;public class SelectSort { /** * @param args */ public static void main(String[] a原创 2016-08-15 22:30:52 · 4809 阅读 · 0 评论 -
排序算法之直接插入排序的思想以及Java实现
1,基本思想 假设待排序的数据是数组A[1….n]。初始时,A[1]自成1个有序区,无序区为A[2….n]。在排序的过程中,依次将A[i] (i=2,3,….,n)从后往前插入到前面已排好序的子数组A[1,…,i-1]中的适当位置,当所有的A[i] 插入完毕,数组A中就包含了已排好序的输出序列。 2,算法的实现(Java) package Algorithm;public class Inse原创 2016-08-10 22:44:36 · 5208 阅读 · 0 评论 -
排序算法之折半插入排序的思想以及Java实现
1 基本思想 折半插入排序(binary insertion sort)的基本原理与直接插入排序相同,不同之处在于,确定当前记录在前面有序子数组中的位置时,直接插入排序是采用顺序查找的方法,而折半插入排序是采用折半查找的方法,因此它仅适用于顺序存储的线性表。2,算法的实现(Java) package Algorithm;public class binary_insert_sort {原创 2016-08-12 22:36:57 · 2996 阅读 · 0 评论 -
排序算法之希尔排序的思想以及Java实现
1 基本思想 shell排序又称之为缩小增量排序,基本思想是,先将待排序序列分割成若干个特殊的子表,分别进行插入排序,当整个表中元素”基本有序”时,再对全体记录进行一次直接插入排序。该方法实质上是一个分组插入方法。2,算法的实现(Java)package Algorithm;public class ShellSort { /** * @param args原创 2016-08-14 17:13:08 · 389 阅读 · 0 评论 -
排序算法之冒泡排序的思想以及Java实现
1 基本思想 设排序表长为n,从后向前或者从前向后两两比较相邻元素的值,如果两者的相对次序不对(A[i-1] > A[i]),则交换它们,其结果是将最小的元素交换到待排序序列的第一个位置,我们称它为一趟冒泡。下一趟冒泡时,前一趟确定的最小元素不再参与比较,待排序序列减少一个元素,每趟冒泡的结果把序列中最小的元素放到了序列的”最前面”。2,算法的实现(Java)package Algorithm;原创 2016-08-14 21:12:47 · 4448 阅读 · 2 评论 -
排序算法之快速排序的思想以及Java实现
1 基本思想 快速排序是在冒泡排序的基础上改进而来的,它是基于分治的思想。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,使得整个数据变成有序序列。2,算法的实现(Java)package Algorithm;public class QuickSort { /**原创 2016-08-14 21:59:13 · 2256 阅读 · 0 评论 -
约瑟夫环简介,问题以及java实现
问题:一群猴子排成一圈,按1,2,…….,n依次编号。然后从第一只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,再把它踢出去………………….,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求:输入m,n,输出最后的那个大王的编号。 很明显,这是一个约瑟夫环的问题,它的特征如下: 1、一群人围在一起坐成环状(例如N个人) 2、从某个编号开始报数(如:K)原创 2016-09-25 21:53:50 · 1787 阅读 · 0 评论