
数据结构与算法
GScallion
这个作者很懒,什么都没留下…
展开
-
数据结构与算法:合并排序
一、原理合并排序就是利用二分法的思想,将一个数组一分为二,然后继续递归式的继续划分小数组,直到划分到最后小数组中只剩下一个元素的时候,再递归回退合并排序起来,这样每次递归回退,就能将两个小数组合并为一个大数组,直到回退到最后合并并排序为一个大的数组图例如下:二、示例代码public class MergeSort { public static void main(String[] args) { int[] nums = {2, 1, 7, 9, 5, 8};原创 2021-09-02 17:47:21 · 274 阅读 · 0 评论 -
数据结构与算法:插入排序
一、原理插入排序的原理即是,从第二个元素开始,找到合适的位置,将元素插入到之前已排好序的元素中去,依次下去最终完成排序。就类似打扑克牌,每次抓到一张新的牌时,都将其插入到手中已排好序的牌组中。插入排序适用于少量数据的排序,特别是将一个新的元素插入到已有的排好序的数组中,插入排序是一种稳定的排序方法。插入排序的时间复杂度为 O(n^2)。由于每次插入一个新的元素,都需要遍历之前的元素,这种遍历方式的时间复杂度为 O(n),排序相当于需要插入 n 个元素,即综合时间复杂度为 O(n^2)。二、示例代码原创 2021-08-30 19:28:26 · 135 阅读 · 0 评论 -
数据结构与算法:冒泡排序
一、原理给定一个数组,把数组里的元素通通倒入到水池中,这些元素将通过相互之间的比较,按照大小顺序一个一个地像气泡一样浮出水面。具体的实现方法就是:每一轮,从杂乱无章的数组头部开始,每两个元素比较大小并进行交换,直到这一轮当中最大或最小的元素被放置在数组的尾部,然后不断地重复这个过程,直到所有元素都排好位置。元素相互比较的过程就是冒泡排序的核心操作。二、示例代码public class BubbleSort { public static void main(String[] args) {原创 2021-08-30 19:26:18 · 104 阅读 · 0 评论 -
数据结构与算法:快速排序
一、原理对于任意一个无序数组,我们随机的选一个元素作为基准元素(例如:数组中的最后一个或者第一个元素, 然后我们将数组中的剩余元素分别与基准元素进行比较,将小于或等于基准元素的数据放在基准元素的左边,将大于基准元素的数据放在基准元素的右边,当全部比较完成之后,基准元素在数组中的位置就确定了下来。然后,在分别对左边数组和右边的数组递归的进行上面的操作,直到每一个元素的位置都唯一确定下来。注意:快速排序最难理解的地方是如何将小于基准元素的元素放在左边,将大于基准元素的元素放在右边,本示例代码使用双指针方法原创 2021-08-20 11:13:59 · 183 阅读 · 0 评论