排序算法
myrhythm_
这个作者很懒,什么都没留下…
展开
-
堆排序
堆排序算法堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序。堆是具有以下性质的二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。一般升序采用大顶堆,降序采用小顶堆。堆排序的基本思想:将待排序的序列构造成一个大顶堆此时,整个序列的最大值就是堆顶的根节点将其与末尾元素进行交换,此时末尾就是最大值然后将剩余的n-1个元素重新构造成一个大顶堆,这样会得到n个元素的次小值。如此反复执行,便可以得到一个有序序列原创 2020-09-06 20:34:32 · 171 阅读 · 0 评论 -
基数排序
基数排序算法基数排序,是通过键值的各个位的值,将要排序的元素分配至某些”桶“中,达到排序的作用。基数排序是稳定性的排序,基数排序是效率高的稳定性排序。基数排序思想:将所有待比较的数值统一为同样的长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。public static void radixSort(int[] arr){ // 得到数组中最大的数的位数 int max = arr[0]; // 先假原创 2020-09-06 20:33:06 · 166 阅读 · 0 评论 -
归并排序
归并排序算法归并排序是利用归并的思想实现的排序方法,该算法采用经典的分治策略(分治法是将问题分为一些小的问题然后递归求解,而治的阶段则是将分的阶段得到的各答案”修补“在一起,即分而治之)。public static void mergeSort(int[] arr, int left, int right, int[] temp){ if(left < right){ int mid = (left + right) / 2; merge(arr, lef原创 2020-09-06 20:31:56 · 169 阅读 · 0 评论 -
快速排序
快速排序算法快速排序思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。public static void quickSort(int[] arr, int left, int right){ int l = left; // 左下标 int r = right; // 右下标 // 中轴值 int pivot =原创 2020-09-06 20:30:44 · 114 阅读 · 0 评论 -
希尔排序
希尔排序算法简单的插入排序存在的问题:当待插入的数时较小的数时,后移的次数明显增多,对效率有影响。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。希尔排序思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰好被分成一组,算法便终止。对有序序列进行插入时使用交换法:public static void shellSort(int[] arr){ int原创 2020-09-06 20:29:20 · 182 阅读 · 0 评论 -
插入排序
插入排序算法插入排序是对欲排序的元素以插入的方式寻找该元素的适当位置,以达到排序的目的。插入排序的思想:把n个待排序的元素看成一个有序表和一个无序表,开始的时候有序表只包含一个元素,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次和有序表中的元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。public static void insertSort(int[] arr){ int insertVal = 0; int insert原创 2020-09-06 20:27:52 · 102 阅读 · 0 评论 -
选择排序
选择排序算法选择排序时从待排序的序列中,按指定的规则选出某一元素,再按规定交换位置后达到排序的目的。选择排序算法思想:第一次从arr[0] – arr[n-1]中选择出最小值,与arr[0]交换;第二次从arr[1] – arr[n-1]中选取最小值,与arr[1]交换;第三次从arr[2] – arr[n-1]中选取最小值,与arr[2]交换;… ;第i次从arr[i] – arr[n-1]中选取最小值,与arr[i]交换;… ;第n-1次从arr[n-2] – arr[n-1]中选取最小值,与arr原创 2020-08-21 22:52:01 · 126 阅读 · 0 评论 -
冒泡排序
冒泡排序算法冒泡排序的基本思想:通过对待排序列从前往后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部。public static void bubbleSort(int[] arr){ int temp = 0; // 临时变量 for(int i = 0; i < arr.length - 1; i++){ for(j = 0; j < arr.length - 1 - i; j++){原创 2020-08-21 22:49:28 · 104 阅读 · 0 评论