
排序
文章平均质量分 74
when_bounce
这个作者很懒,什么都没留下…
展开
-
简单排序算法:冒泡排序(交换排序)
冒泡排序:是一种交换排序。基本思想:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。在不断循环的过程中,不仅将最小的关键字放到第一的位置,还将较小的关键字的位置提升了,较小的数字如同气泡般浮到上面。import java.util.Arrays;public class Solution { public static void main(String[]原创 2017-11-07 16:36:17 · 1442 阅读 · 0 评论 -
定长字符串的计数基数排序
class Solution { public static void main(String[] args) { String[] arr = new String[]{"064", "008", "000", "001", "343", "010"}; countingRadixSort(arr, 3); for (String s :原创 2018-01-16 20:50:26 · 502 阅读 · 0 评论 -
排序
排序的稳定性:由于排序不仅是针对主关键字,对于次关键字,因为待排序的记录序列中可能存在两个或两个以上的关键字相等的记录,排序结果可能会存在不唯一的情况。假设ki=kj,且在排序前的序列中ri领先于rj。如果排序之后ri仍领先于rj,则称所用的排序方法是稳定的,反之,若可能使得排序后的序列中rj领先于ri,则称所用的排序方法不稳定。内排序:在排序的整个过程中,待排序的所有记录全部被放置在内存中。原创 2017-11-09 16:10:41 · 764 阅读 · 3 评论 -
改进排序算法:快速排序(对冒泡排序的改进)
快速排序的基本思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。Partition函数的作用:选取当中的一个关键字,将它放到一个位置,使得它左边的值都比它小,右边的值比它大,这样的关键字被称为枢轴。一:取low端的值作为枢轴记录,从high端开始交换import java.u原创 2017-11-07 14:39:10 · 1086 阅读 · 0 评论 -
改进排序算法:归并排序
堆排序:利用了完全二叉树的特性,深度是[log2n]+1,所以效率比较高。一般,涉及到完全二叉树结构的排序算法,效率都不低。归并:将两个或两个以上的有序表组合成一个新的有序表。归并排序(2路归并排序):假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到[n/2]([x]表示不小于x的最小整数)个长度为2或1的有序子序列;再两两归并,...,原创 2017-11-08 18:51:39 · 766 阅读 · 0 评论 -
改进排序算法:堆排序(对简单选择排序的改进)
简单选择排序:在待排序的n个记录中选择一个最小的记录需要比较n-1次。但是并没有把每一次的比较结果保存下来,在后一次的比较中,有许多比较在前一次已经做过了,但由于前一次排序时未保存这些比较结果,所以后一次排序时又重复执行了这些比较操作,因而比较次数较多。堆排序:每次在选择到最小记录的同时,根据比较结果对其他记录做出相应的调整,使得排序的总体效率变高。大顶堆:每个节点的值都大于或等于其左右孩原创 2017-11-07 20:02:00 · 1194 阅读 · 0 评论 -
改进排序算法:希尔排序(对直接插入排序的改进)
直接插入排序在以下情况下效率很高:1、记录本身就是基本有序的,只需要少量的插入操作,就可以完成整个记录集的排序工作。2、记录数比较少的时候。将原本有大量记录数的记录进行分组,分割成若干个子序列,每个子序列待排序的记录个数就比较少了,然后在这些子序列内分别进行直接插入排序,当整个序列都基本有序时,再对全体记录进行一次直接插入排序。基本有序:小的关键字基本在前面,大的基本在后面,不大不原创 2017-11-07 19:23:13 · 840 阅读 · 0 评论 -
简单排序算法:简单选择排序(选择排序)
简单选择排序法:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1import java.util.Arrays;public class Solution { public static void main(String[] args) { Solution s = new Solution(); int[] arr原创 2017-11-07 17:04:34 · 1293 阅读 · 0 评论 -
简单排序算法:直接插入排序(插入排序)
直接插入排序:将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。import java.util.ArrayList;import java.util.Arrays;public class test { public static void main(String[] args) { test s = new test();原创 2017-11-07 15:37:16 · 848 阅读 · 0 评论 -
变长字符串的基数排序
import java.util.ArrayList;class Solution { public static void main(String[] args) { String[] arr = new String[]{"064", "008", "000", "001", "343", "010","0022","2323","0001"}; r原创 2018-01-16 22:58:05 · 842 阅读 · 0 评论