排序算法
排序算法
白首码农
这个作者很懒,什么都没留下…
展开
-
排序算法之基数排序
算法逻辑基数排序(Radix Sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的无素分配至某些“桶”中,藉以达到排序的作用以整型数组排序为例,首先需要声明一个桶数组,一个装载数据的临时数组,然后会按个位进行计数,再之后对计数进行累加,这么做的目的是得到符合当前桶特征的数据最后一个的所在位置。然后,对原数组从后往前遍历,结合桶数组中计算的好位置信息,得到一个新的数组存在临.原创 2021-09-13 13:51:29 · 110 阅读 · 0 评论 -
排序算法之归并排序
算法逻辑归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。示例代码import org.junit.jupiter.api.Test;import java.util.Arrays;import java.util.stream.Collectors;原创 2021-09-13 10:51:22 · 76 阅读 · 0 评论 -
排序算法之堆排序
算法逻辑堆是一个完全二叉树,以大顶堆为例。每个节点的值都大于或等于其左右孩子节点的值,称为大顶堆。逻辑:首先构建出大顶堆,然后把根节点与数组最后一个元素进行交换。交换之后,会采用递归的方式去重构目前的堆,以确保他依旧是大顶堆,每次重构堆,每都得到一个最大值。示例代码/** * 完全二叉树的一些规则 * 第i个元素的根节点下标:(i-1)/2 * 第i个元素的左子节点下标:i*2+1 * 第i个元素的右子节点下标:i*2+2 * */public class HeapSor原创 2021-09-13 10:08:01 · 49 阅读 · 0 评论 -
排序算法之冒泡排序
算法原理它重复地走访过要排序的数组,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。示例代码import org.junit.jupiter.api.Test;import java.util.Arrays;import java.util.stream.Collectors;import static org.junit.jupiter.api.Assertions原创 2021-09-12 17:43:34 · 94 阅读 · 0 评论 -
排序算法之选择排序
算法思路每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。代码示例import org.junit.jupiter.api.Test;import java.util.Arrays;import java.util.stream.Collectors;import static org.junit.jupiter.api.Assertions.assertEquals;public class SelectionSortTest {原创 2021-09-12 17:36:21 · 48 阅读 · 0 评论 -
排序算法之希尔排序
算法逻辑按照某一间隔对数组元素进行分组,每组数据再按照直接插入排序的逻辑进行排序,这个间隔第一次取数组长度的二分之一,下一次在此基础上再取二分之一,直到间隔为1为止。示例代码import org.junit.jupiter.api.Test;import java.util.Arrays;import java.util.stream.Collectors;import static org.junit.jupiter.api.Assertions.assertEquals;pu原创 2021-09-12 20:06:25 · 50 阅读 · 0 评论 -
排序算法之直接插入排序
算法逻辑每次将一个记录插入到已经排好序的有序列表中。开始是从第一个元素开始,如果第0个元素比其大,就会互换这两个元素的值。按这思路,每次会将第n个元素插入到其前面有序元素中。示例代码import org.junit.jupiter.api.Test;import java.util.Arrays;import java.util.stream.Collectors;import static org.junit.jupiter.api.Assertions.assertEquals;原创 2021-09-12 19:02:54 · 84 阅读 · 0 评论 -
排序算法之快速排序
算法原理首先设定最左边的值为分界值,从数组两端交替进行比较,小的放在分界值的左边,大的放在分界值的右边,当索引重合时,设置为分界值。在此之后,对左右两部分分别重复上述过程。示例代码import org.junit.jupiter.api.Test;import java.util.Arrays;import java.util.stream.Collectors;import static org.junit.jupiter.api.Assertions.assertEquals;原创 2021-09-12 18:25:18 · 54 阅读 · 0 评论