Java排序
IrvingTc
成功背后不是沧桑便是肮脏
展开
-
Java排序(一):插入排序
插入排序实现的思路        对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入 从第一个元素开始,该元素被认为已经被排序; 取出下一个元素,在已排序的元素序列中从后向前扫描; 如果已排序元素大于取出的元素,取出的元素就继续与前一个元素比较,直到找到已排序的元素小于或者等于新元素的位置; 将新元素插入到该位置; 重复步骤2~4。 Java...原创 2019-02-10 20:14:21 · 272 阅读 · 0 评论 -
Java排序(二):选择排序
选择排序的实现思想        在未排序序列中找到最小元素,放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾,循环直到所有元素军排序完毕。 初始状态:无序区为S[1,2,…,n],有序区为空; 第i趟排序(i = 1,2,3,…,n-1)开始时,当前有序区和无序区分别为S[1…i-1]和S[i…n]。该趟排序从...原创 2019-02-10 21:15:44 · 532 阅读 · 0 评论 -
Java排序(三):冒泡排序
冒泡排序的实现思想 冒泡排序在代码上是最简单的,它重复地走访要排序的数列,一次比较两个元素,当这两个元素的顺序错误时,就交换这两个元素的位置,走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 初始时,有序区为空,无序区为S[1…n]; 在第i趟排序时...原创 2019-02-10 22:25:44 · 165 阅读 · 0 评论 -
Java排序(四):希尔排序
希尔排序的实现思想        希尔排序是插入排序的改进版,它与插入排序的不同之处在于,它会优先比较距离较远的元素。因此希尔排序又叫缩小增量排序。 选择一个增量序列,一般好的增量序列都有两个共同的特征: - 最后一个增量必须为1,保证最后一趟试一次普通的插入排序; - 应该尽原创 2019-02-12 22:25:07 · 147 阅读 · 0 评论 -
Java排序(五):归并排序
归并排序 递归的把已有序列均分为两个子序列,使子序列有序,合并子序列 把长度为n的输入序列分成两个长度为n/2的子序列; 对这两个子序列分别采用归并排序; 将两个排序好的子序列合并成一个最终的排序序列。 Java实现归并排序 public class MergeSort { private static int[] aux;//归并所需的辅助数组 public static v...原创 2019-03-17 20:31:20 · 252 阅读 · 0 评论 -
Java排序(六):快速排序
快速排序的实现思想 先从数列中取出一个数作为基准数。 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它 的左边。 再对左右区间重复第二步,直到各区间只有一个数。 Java实现 public class QuickSort { public static void quickSort(int[] nums){ sort(nums,0,nums.lengt...原创 2019-03-21 15:37:31 · 136 阅读 · 0 评论 -
Java排序(七):堆排序
堆排序的实现思想 讲堆排序前先了解一下什么是二叉堆: 二叉堆的定义 二叉堆是完全二叉树或者是近似完全二叉树。 二叉堆满足二个特性: 父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。 每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。  ...原创 2019-03-21 17:10:17 · 134 阅读 · 0 评论 -
Java排序(八):总结
一、冒泡排序 冒泡排序的主要思路是: 将数据分为有序区和无序区,最初有序区数据量为0,无序区数据为n(0,1,…n-1),然后通过交换使相邻的两个数变成小数在前大数在后,这样每次遍历后,最大的数就“沉”到最后面了,有序区数据量加一,无序区数据量减一,重复N次即可以使数据有序。 改进:在某...原创 2019-03-21 22:52:16 · 197 阅读 · 0 评论