排序算法
斜月&三星
这个作者很懒,什么都没留下…
展开
-
冒泡排序
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比 较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序 要求相反时,就将它们互换。 ...原创 2018-11-17 20:52:31 · 84 阅读 · 0 评论 -
直接插入排序
在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的 有序数中,使得这 n个数也是排好顺序的。如此反复循环,直到全部排好顺序。 public static void insertionSort(int[] arr) { if (arr == null || arr.length < 2) { r...原创 2018-11-17 20:58:50 · 101 阅读 · 0 评论 -
选择排序
在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的 与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。 public static void selectionSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i...原创 2018-11-18 08:33:24 · 88 阅读 · 0 评论 -
堆排序
堆排序是一种树形选择排序,是对直接选择排序的有效改进。堆的定义如下:具有n个元素的序列 (h1,h2,...,hn),当且仅当满足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1)(i=1,2,...,n/2)时称之 为堆。在这里只讨论满足前者条件的堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最 大项(大顶堆)。完全二叉树可以...原创 2018-11-18 08:33:37 · 87 阅读 · 0 评论 -
快速排序算法
选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一 部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的 方法递归地排序划分的两部分。 public static void quickSort(int[] arr) { if (arr == null || arr.length < 2)...原创 2018-11-18 08:33:48 · 86 阅读 · 0 评论 -
归并排序
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分 为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 public static void mergeSort(int[] arr) { if (arr == null || arr.length < 2) { return; } mergeSor...原创 2018-11-18 08:33:57 · 71 阅读 · 0 评论 -
算法复杂度比较
原创 2018-11-18 08:34:45 · 603 阅读 · 0 评论