![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础算法
GZY_BUPT
不积跬步无以至千里
展开
-
《基础算法之排序》: 1、冒泡排序——java实现
1、冒泡排序 题目思路: 所谓冒泡排序,就是将较大的泡(数)不断往上冒,所以一次循环结束能够将最大的数冒泡到最后面位置,接下来的循环就是不断将最大的数冒泡到上次排好序的位置。 冒泡排序的时间复杂度为o(n^2) 排序稳定性: 由于冒泡排序需要比较当前位与后一位的大小,当两个位置数值相等时,不会发生位置的交换,故冒泡排序具有稳定性。 public static int[] bubb...原创 2018-08-26 15:45:39 · 296 阅读 · 0 评论 -
《基础算法之排序》: 2、插入排序——java实现
2、插入排序 题目思路: 所谓插入排序,就是遍历到当前位置时,将该位置的数插入到之前的有序数组里,使得加入该位置后依然是有序的数组。 example:初始数组[3, 1, 2, 4] 1、第一步,将index=1位置的数插入到前面,使得index为0、1的位置有序; 2、第二步,如果arr[1] <= arr[0]则需要交换该位置与前一个位置的元素,即将当前元素插入到...原创 2018-08-26 16:41:45 · 148 阅读 · 0 评论 -
《基础算法之排序》: 3、选择排序——java实现
3、选择排序 题目思路: 选择排序与冒泡排序类似:冒泡排序是将最大的值依次冒泡到最后面,选择排序是将最小的值依次交换到最前面。选择排序就是选择最小值! 1、第一步:对于第一个位置,即从第一个位置开始,找到后面的最小值,与第一个位置的值交换; 2、第二步:对于第二个位置,即从第二个位置开始,找到后面的最小值,与第二个位置交换; 3、第三步:接下来依次进行,找到后面的最小值,...原创 2018-08-26 17:37:31 · 224 阅读 · 0 评论 -
《基础算法之排序》: 4、堆排序——java实现
4、堆排序 题目思路: 对于堆排序,首先要了解堆的概念,堆分为大顶堆和小顶堆。顾名思义,大顶堆的堆顶元素为整个堆的最大值;小顶堆的堆顶元素为整个堆的最小值。 对于本题的堆排序,采用的是大顶堆。堆排序主要分为两部分,建堆和调整堆。 建堆的过程就是遍历要排序的数组中的每一个元素,然后依次放入大顶堆,并比较大小,找到每个元素的位置,大顶堆构建完毕后,此时堆顶为最大值。 调整堆的过程就是,将堆顶...原创 2018-08-28 15:37:09 · 164 阅读 · 0 评论 -
《基础算法之排序》: 5、快速排序——java实现
5、快速排序 题目思路: 其实快排的思想很简单,一共两个步骤: 第一个步骤就是将首位看成分割或者轴点,让小于该位置的数放到左边,大于该位置的数放到右边。 第二个步骤就是一旦第一个步骤完成,就在此基础上再分别将左边和右边递归做第一步的处理,直到每一个位置上的都实现小的在左大的在右。 排序复杂度: 时间复杂度:o(n^2) 空间复杂度:o(1) 排序稳定性: 由于left和right...原创 2018-08-28 22:58:20 · 151 阅读 · 0 评论 -
《基础算法之排序》: 6、归并排序——java实现
6、归并排序 题目思路: 归并排序的核心思想是利用归并算法,采用分治的策略:所谓分(归)就是将大问题采用递归的方式分成若干个小的子问题,所谓治(并)就是将小的问题逐一求解,求解之后弹出递归栈,并对父问题求解,最后并到一起。 排序复杂度: 时间复杂度:o(nlogn) 空间复杂度:o(n) 算法稳定性: 由于采用分治思想,在遍历的过程中,若两位置值相等,会根据相应指针移动,然后存入...原创 2018-08-30 10:07:17 · 184 阅读 · 0 评论 -
《基础算法之排序》:7、桶排序——java实现
7、桶排序 题目思路: 桶排序的基本思路是: 第一步:先获取数组中的最大和最小值,来得到桶的个数; 第二步:然后遍历数组,将数组中的值插入到桶中,数组的值为桶的index;此桶的值0为这表示该位置没有值,为1则表示有一个值,为n的时候表示有多个值; 第三步:重新遍历桶,如果当前index对应的值不为0,则表示有值,放到arr数组中。 算法复杂度: 时间复杂度和空间复杂度都是非...原创 2018-08-30 14:44:17 · 184 阅读 · 0 评论