------------【排序算法】
文章平均质量分 94
你是我世界的光
不念过往,不畏将来。
展开
-
一天一排序之“冒泡排序(Bubble_sort)”
之前觉得冒泡排序好简单,但是最近重新写的时候,竟然卡壳了,真是无奈。还是老老实实的多写几遍吧以下是源代码:package SecondSort;public class BubbleSort{ public static void b_sort(int[] a) { int len = a.length; int i,j; for(i = 0;i<len;i++)/原创 2016-04-15 09:43:07 · 566 阅读 · 0 评论 -
一天一排序之“快速排序(quic_sort)”
快速排序,简称快排,主要采用了“分治法”,即第一趟排序得到以某一数据为基准的序列,即该数左边的数都比该数小,右边的都比该数大(以升序考虑),然后对左序列重新找基准重复上述过程,右序列也是如此处理。代码如下:package Sort;public class QUICKsort{ public static int adjust(int[] arr, int a, int b)原创 2016-04-05 20:56:08 · 495 阅读 · 0 评论 -
一天一排序之“插入排序(insertSort)”
插入排序:从最前面的一个元素开始,每次依次添加一个元素并排序。下面是代码:package Sort;public class insertSort{ public static void sortwithinsert(int[] arr) { int j = 0; for (int i = 1; i < arr.length; i++)// 控制外层循环 { in原创 2016-04-04 12:14:44 · 405 阅读 · 0 评论 -
一天一排序之“希尔排序(缩小增量排序)”
希尔排序,又叫缩小增量排序,通过取不同的增量,将数组分成不同的组并进行插入排序,然后不断缩小增量,等到基本有序后,进行一次全面的插入排序。以下是代码:package Sort;public class ShellSort { // 第一种方法,以某一增量为间隔,将组内所有的值进行插入排序。缩小增量,继续重复操作。 public static void shellsort1(int原创 2016-04-03 11:59:47 · 481 阅读 · 0 评论 -
一天一排序之“堆排序(heapsort)”
堆排序包括两部分,一是数组的堆化,而是交换堆顶元素与最后一个元素的位置。 数组的堆化,需要与归并排序用相同的思想考虑。即都是在原来堆化好的基础上继续堆化。以下是代码及部分注释:package sort;public class heapSort { // 这部分是在已堆化好的堆上添加pos位置的元素。 public static void adjustMinHeap(int[原创 2016-04-03 00:00:33 · 688 阅读 · 0 评论 -
一天一排序之“归并排序(mergesort)”
归并排序算法分2部分:第一部分是“并”,即将2个有序表合成一个新的有序表。第二部分是“分”与“递归”,即采用递归的方式将一个长的表分成2个较短的表,在彻底分解完成之后,然后开始“并”。具体代码如下:package Sort;public class MergeSorttest { //*****以下为“并”的处理。 public static void merge(i原创 2016-03-31 14:25:25 · 408 阅读 · 0 评论 -
七大排序算法性能的分析
这里我来集中分析一下七大排序算法的性能问题。如果不当之处,敬请指正。冒泡排序(Bubble) 排序算法 平均情况下 最好情况 最坏情况 稳定性 空间复杂度 冒泡 O(n2n^2) O(n) O(n2n^2) 稳定 1冒泡排序算法里面含有2层循环,显然最坏时间复杂度为O(n2n^2),这里可能很多人不懂平均情况下的复杂度是什么意思,下面引用一段话:原创 2016-06-17 16:05:26 · 9203 阅读 · 3 评论