
排序
_我们的存在
这个作者很懒,什么都没留下…
展开
-
Java 八大排序之——归并排序
代码 private static void MergeSort(int[] a) { System.out.println("开始排序"); Sort(a, 0, a.length - 1); } private static void Sort(int[] a, int left, int right) { // !!!等于的时候原创 2015-10-18 09:36:14 · 463 阅读 · 0 评论 -
Java 八大排序之——快速排序
代码 public static int partition(int a[], int low, int high) { int privotKey = a[low]; while (low < high) { while (low < high && a[high] >= privotKey) { hig原创 2015-10-18 09:35:15 · 443 阅读 · 0 评论 -
Java 八大排序之——堆排序
代码 /* * 选择排序-堆排序 * * 若以一维数组存储一个堆,则堆对应一个完全二叉树,且所有非叶结点的值,不大于其子女的值 * 堆顶元素是最小的(小顶堆) * * * 已知H[s...m]除了H[s]外均满足堆的定义 调整H[s],使之成为大顶堆,将第s个结点为根的子树筛选 * * H:待调整的堆原创 2015-10-18 09:34:09 · 448 阅读 · 0 评论 -
Java 八大排序之——简单选择排序
分析 选出最小的元素,与数组第一个位置交换 选出第i小的元素,与数组第i个位置交换 直到第n-1个元素,与第n个元素比较为止 代码 /* * 选择排序-简单选择排序 * 基本思想:在一组要排序的数中,选取最小的与第一个位置交换 */ public static int SelectMinKey(int a[], int i) { int k原创 2015-10-17 16:49:32 · 384 阅读 · 0 评论 -
Java 八大排序之——希尔排序
分析又叫缩小增量排序。 将待排序列,分割成若干子序列进行直接插入排序 序列基本有序时,对全体进行直接插入排序 方法 选择增量序列,t1,t2,…,tkt_1,t_2,…,t_k ,序列依次递减,tk=1t_k=1 按增量序列个数k,进行k次排序 根据增量tit_i,对子序列进行直接插入排序。当增量为1时,整个序列作为一个表处理,得到排序后的数组 代码 public static v原创 2015-10-17 16:42:21 · 437 阅读 · 0 评论 -
Java 八大排序之——直接插入排序
分析将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。要点:设立哨兵,作为临时存储和判断数组边界之用。 如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定原创 2015-10-17 14:01:48 · 459 阅读 · 0 评论 -
Java 八大排序之——冒泡排序
分析每相邻两个数比较,大的向右沉,数据“冒泡”。每一次排序,能使最大的排在最后。代码 /* * 算法改进:加一个标志位,记录每趟排序最后一个进行交换的位置,下一次只需扫描到pos */ public static void bubbleSort(int a[]) { int i = a.length - 1; while (i > 0原创 2015-10-17 13:56:42 · 433 阅读 · 0 评论