排序算法
god-jiang
这个作者很懒,什么都没留下…
展开
-
神级基础排序——快速排序
概念快速排序是一种原地排序,只需要一个很小的栈作为辅助空间,空间复杂度为O(logN),所以适合在数据集比较大且无序的时候使用。实现方法有经典快排和双指针快排,本文介绍的是双指针快排的实现。【注意】:快排的经典排序实现的partition过程其实就是荷兰国旗问题,不明白的或者不熟悉的可以先看一下荷兰国旗算法。本文的实现主要讲双指针法。荷兰国旗算法:荷兰国旗问题&快排&BF...原创 2020-03-27 15:04:34 · 844 阅读 · 0 评论 -
神级基础排序——归并排序
归并排序的介绍归并排序(英语:Merge sort,或Mergesort),是创建在归并操作上的一种有效的排序算法,其时间复杂度为O(N*logN)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。概念是利用递归与分治的技术将数据序列划分为越来越小的半子表,再对半子表排序,最后再用递归方法...原创 2020-03-29 15:50:06 · 838 阅读 · 0 评论 -
神级基础排序——堆排序
堆排序的介绍堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。完全二叉树:除了最后一层之外的其他每一层都被完全填充,每一层从左到右的填充数据,不能空缺大根堆:任意一个节点的值均大于等于它的左右孩子的值,位于堆顶的节点值最大小根堆:任意一个节点的值均小于等于它...原创 2020-03-30 18:07:09 · 331 阅读 · 0 评论 -
基础排序(冒泡、选择、插入)
前言基本每个人入门数据结构和算法都是先经历过排序,今天就来讲解一下最基础的三个入门排序算法。分别是冒泡排序、选择排序和插入排序。冒泡排序思路:两两交换,小的往左边,大的往右边。就是每趟过程把最大的数往右边靠,然后从剩下的数继续刚才的过程。代码(冒泡排序)package sort;import java.util.Arrays;/** * @author god-jian...原创 2020-03-31 16:58:13 · 327 阅读 · 0 评论