算法 2.1节 希尔排序、选择与插入排序的区别、排序的稳定性
2018-01-09 02:24
351 查看
希尔排序
选择与插入排序的区别
插入排序在输入本身已经基本排序好时,速度非常快
排序的稳定性
A stable sort preserves the relative order of items with equal keys.
In a stable sort, equal items never move past each other.
插入排序和归并排序时稳定的,选择排序和希尔排序是不稳定的
public class ShellSort { public static void sort(Comparable[] a) { int n = a.length; int h = 1; while (h < n / 3) h = 3 * h + 1; while (h >= 1) { for (int i = h; i < n; i++) { for (int j = i; j >= h && less(a[j], a[j - h]); j -= h) { exch(a, j, j - h); } } assert isHsorted(a, h); h /= 3; } assert isSorted(a); } private static boolean less(Comparable v, Comparable w) { return v.compareTo(w) < 0; } private static void exch(Object[] a, int i, int j) { Object swap = a[i]; a[i] = a[j]; a[j] = swap; } private static boolean isSorted(Comparable[] a) { for (int i = 1; i < a.length; i++) if (less(a[i], a[i-1])) return false; return true; } private static boolean isHsorted(Comparable[] a, int h) { for (int i = h; i < a.length; i++) if (less(a[i], a[i-h])) return false; return true; } }
选择与插入排序的区别
插入排序在输入本身已经基本排序好时,速度非常快
排序的稳定性
A stable sort preserves the relative order of items with equal keys.
In a stable sort, equal items never move past each other.
插入排序和归并排序时稳定的,选择排序和希尔排序是不稳定的
相关文章推荐
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 【排序】插入排序,希尔排序,选择排序,冒泡排序,堆排序详解及稳定性分析
- 算法——选择排序、插入排序和希尔排序(改进的插入排序)
- 《算法》排序第一天(选择排序、插入排序、希尔排序)
- 【C#算法】冒泡排序 选择排序 插入排序 希尔排序--转
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 算法分析中最常用的几种排序算法(插入排序、希尔排序、冒泡排序、选择排序、快速排序,归并排序)C 语言版
- 算法_基本排序算法之冒泡排序,选择排序,插入排序和希尔排序
- 算法系列(二)冒泡排序、选择排序、插入排序和希尔排序(Java实现)
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
- 【算法】希尔排序,快速排序,选择排序,插入排序,冒泡排序
- 笔试面试最常涉及到的12种排序算法(包括插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序、桶排序、计数排序和基数排序)进行了详解。每一种算法都有基本介绍、算
- 算法 —— 选择排序,插入排序,希尔排序
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序
- 基本的排序算法:冒泡排序、插入排序、希尔排序、选择排序、归并排序、快速排序、堆排序
- 算法和数据结构-选择排序、插入排序及希尔排序 java实现
- 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)
- C#的排序算法:冒泡排序、选择排序、插入排序和希尔排序
- java基本算法总结(冒泡排序、选择排序、插入排序)
- 排序总结(1)---冒泡排序、选择排序、插入排序、希尔排序