算法
GuiXu40
这个作者很懒,什么都没留下…
展开
-
快速排序
快速排序顾名思义:快速排序是基于比较的排序算法中最快的一种–复杂度会更趋近于O(nlogn)执行流程从序列中选择一个轴点(pivot)–假设每次选择0位置的元素为轴点元素利用pivotj将序列分割成2个子序列将小于pivot的元素放在pivot前面(左侧)将大于pivot的元素放在pivot后面(右侧)等于pivot的元素放那边都可以就是帮第一个元素找到他对应的位置对子序列进行1, 2 操作递归操作直到不能再分割(子序列中只剩下一个元素)递归结束条件轴点原创 2020-07-15 13:35:35 · 181 阅读 · 0 评论 -
归并排序
归并排序简介归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行执行流程不断地将当前序列平均分割成2个子序列,直到不能再分割(序列中只剩一个元素)不断地将2个子序列合并成一个有序序列,直到最终只剩下1个有序序列代码 public static void merge(int[] a, int原创 2020-07-13 14:41:40 · 202 阅读 · 0 评论 -
插入排序
插入排序简介插入排序类似于扑克牌的排序执行流程在执行过程中,插入排序会将序列分为2部分, 头部是已经排好序的,尾部是待排序的从头开始扫描每一个元素,每当扫描到一个元素,就将它插入到头部合适的位置,使得头部数据依然保持有序图示代码// array 用于排序的数组for (int begin = 1; begin < array.length; begin++) { int cur = begin; // 用于保存当前需要插入的数据 // 交换数据原创 2020-07-13 09:30:19 · 355 阅读 · 0 评论 -
冒泡排序
冒泡排序起泡排序执行流程(升序)从头开始比较每一对相邻元素,如果第一个比第二大,就交换他们的位置–执行完一轮后,最末尾那个元素就是最大的元素忽略第一步中曾经找到的最大元素,重复执行步骤一,知道全部元素有序步骤演示代码实现// javafor (int end = array.length - 1; end > 0; end--) { // 外层循环控制循环次数 // 内层循环进行每一轮的比较 for (int begin = 1; begin <原创 2020-07-05 16:19:20 · 145 阅读 · 0 评论 -
排序算法
排序算法基本的排序算法冒泡排序选择排序插入排序常考的排序算法(解决绝大部分涉及排序问题的关键)归并排序快速排序拓扑排序其他排序算法堆排序桶排序基数排序计数排序希尔排序冒泡,选择,插入, 归并,快速,希尔,堆排序 属于比较排序(Comparison Sorting) 基于比较的排序算法的平均复杂度都不会超过nlgn: 可以通过决策树进行证明...原创 2020-07-05 16:16:19 · 140 阅读 · 0 评论 -
全排列
全排列算法问题:求一个数字序列的全排列,比如【1,2,3】的全排列为123, 132, 213, 231, 312, 321天真的方法是采取自上而下的递归方法。我们可以选择第一个元素,然后递归并从其余元素中选择第二个元素,依此类推。但是这种方法很棘手,因为它涉及到递归,堆栈存储和跳过重复值。此外,如果我们坚持要按顺序操作序列(而不产生临时数组),那么很难按字典顺序生成排列。所以我们选择的是从最低排列开始,然后重复计算就位的下一个排列。递归算法描述要对1、2、3、4进行排序,第一个位置上的元素翻译 2020-06-26 15:29:08 · 192 阅读 · 0 评论