Algorithm Part I:Merge Sort

1.归并排序的思想

2.归并排序的具体实现

3.归并排序的改进:

(1)当递归到一定程度,数组已经足够小时(length<=7),直接对数组进行插入排序。

(2)当较小的那部分数值的最大值>=较大部分的最小值时,则直接返回,不对这两部分数组进行合并。

4.归并排序的变形—buttom up merge sort

基本思路:

(1)设length=2。依次遍历数组,将连在一起的length个元素组成一个子数组,依次对各个子数组进行排序。

(2)length=length*2。重复(1)的操作,直到length=数组长度。

实现:

5.排序算法稳定性总结

(1)希尔排序:不稳定。

(2)选择排序:不稳定。

(3)快速排序:不稳定。

(4)插入排序:稳定。

(5)归并排序:稳定。

时间: 2024-11-06 07:40:55

Algorithm Part I:Merge Sort的相关文章

Natural Merge Sort(自然归并排序)

This is a Natural Merge Sort program from my textbook. It works, but I don't think it's good. // Natural merge sort program in the textbook public class NaturalMergeSortProgram { public static void main(String[] args) { int a[] = new int[10000000]; i

[building block] merge sort @ Python

Here is the basic algorithm about merge sort: def merge(s1,s2,s): i=j=0 while i + j < len(s): if j == len(s2) or (i < len(s1) and s1[i] < s2[j]): s[i + j] = s1[i] i += 1 else: s[i + j] = s2[j] j += 1 def merge_sort(s): """ Sort the

C++ Merge sort(归并排序)

归并排序(merge sort)是一个时间复杂度为O(nlogn)的基于比较的排序算法(comparison based sorting algorithm). 归并排序大多数实现(implementation)都将其实现成了一个stable sort, 所谓的stable sort的意思就是the implementation preserves the input order of equal elements in the sorted order. merge sort 也采用了divi

873D. Merge Sort

Merge sort is a well-known sorting algorithm. The main function that sorts the elements of array a with indices from [l,?r) can be implemented as follows: If the segment [l,?r) is already sorted in non-descending order (that is, for any i such that l

[算法]——归并排序(Merge Sort)

归并排序(Merge Sort)与快速排序思想类似:将待排序数据分成两部分,继续将两个子部分进行递归的归并排序:然后将已经有序的两个子部分进行合并,最终完成排序.其时间复杂度与快速排序均为O(nlogn),但是归并排序除了递归调用间接使用了辅助空间栈,还需要额外的O(n)空间进行临时存储.从此角度归并排序略逊于快速排序,但是归并排序是一种稳定的排序算法,快速排序则不然. 所谓稳定排序,表示对于具有相同值的多个元素,其间的先后顺序保持不变.对于基本数据类型而言,一个排序算法是否稳定,影响很小,但是

排序算法二:归并排序(Merge sort)

归并排序(Merge sort)用到了分治思想,即分-治-合三步,算法平均时间复杂度是o(nlgn). (一)算法实现 1 private void merge_sort(int[] array, int first, int last) { 2 if (first + 1 < last) { 3 int mid = (first + last) / 2; 4 merge_sort(array, first, mid); 5 merge_sort(array, mid, last); 6 7 /

SQL Tuning 基础概述06 - 表的连接方式:Nested Loops Join,Merge Sort Join &amp; Hash Join

nested loops join 嵌套循环 merge sort join 排序合并 hash join 哈希连接 nested loops join(嵌套循环)   驱动表返回几条结果集,被驱动表访问多少次,有驱动顺序,无须排序,无任何限制. 驱动表限制条件有索引,被驱动表连接条件有索引. hints:use_nl() merge sort join(排序合并)   驱动表和被驱动表都是最多访问1次,无驱动顺序,需要排序(SORT_AREA_SIZE),连接条件是<>或like导致无法使用

STL 源码剖析 算法 stl_algo.h -- merge sort

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie merge sort ---------------------------------------------------------------------- 描述:归并排序 思路: 1.将区间对半分割 2.对左.右段分别排序 3.利用inplace_merge将左.右段合并成为一个完整的有序序列 复杂度:O(nlog n) 源码: template<class Bidirection

经典排序算法 - 归并排序Merge sort

经典排序算法 - 归并排序Merge sort 原理,把原始数组分成若干子数组,对每个子数组进行排序, 继续把子数组与子数组合并,合并后仍然有序,直到所有合并完,形成有序的数组 举例 无序数组[6 2 4 1 5 9] 先看一下每一个步骤下的状态,完了再看合并细节 第一步 [6 2 4 1 5 9]原始状态 第二步 [2 6] [1 4] [5 9]两两合并排序,排序细节后边介绍 第三步 [1 2 4 6] [5 9]继续两组两组合并 第四步 [1 2 4 5 6 9]合并完成,排序完成 输出结