摘要:
我不同意你的观点,不过我会用鲜血来捍卫你表达你的观点的权利’,同样我不喜欢吃狗肉但我将捍卫别人吃狗肉的权利 阅读全文
摘要:
快速排序(Quicksort)是对冒泡排序的一种改进。由C.A.R.Hoare在1962年提出。 基本思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成 阅读全文
摘要:
/** * 希尔排序————和折半插入排序法一样,也是直接插入排序的改进版 * 1959年Shell发明,较早突破O(n2)的排序算法。它与插入排序的不 * 同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。 * 其最坏时间复杂度依然为O(n2),一些经过优化的增量序列如Hibbar 阅读全文
摘要:
折半插入排序 也叫二分插入排序——插入排序的改进版在插入排序的基础上改进而来,直接插入排序中,我们每次都要向前依次比较,二分插入法则在要插入的元素前通过二分折半搜索找到插入地点,从而大大减小时间复杂度 时间复杂度:O(n*log2(n)) (直接插入排序是O(n^2), 可见有较大提升) 空间复杂度 阅读全文
摘要:
插入排序 1 public int[] insertSort(int[] arr) { 2 /** 3 * 插入排序: 4 * 算法思想:从第二个元素开始到最后一个元素,取出元素,依次与它前面的元素比较(从后往前),如果大于等于,插入,反之则将该位置的元素向后移动,继续与前一个比较直至插入 5 * 阅读全文
摘要:
选择排序 1 public int[] selectSort(int[] arr) { 2 /** 3 *选择排序法: 4 * 算法思路:设定最大/小值,初始化为要排序的第一个元素,然后向一边与每个元素比较,找出最大/最小值,放到一边 5 * 时间复杂度:O(n^2) 6 * 空间复杂度:O(1) 阅读全文
摘要:
冒泡排序 1 public int[] bubbleSort(int[] arr) { 2 /** 3 * 冒泡排序: 4 * 算法思路:每个元素后排序方向的每一个元素比较,大/小则交换,从而每次将最大往目标方向移动 5 * 时间复杂度: O(n^2) 6 * 空间复杂度: O(1) 7 * 稳定性 阅读全文