`
mixer_a
  • 浏览: 368967 次
社区版块
存档分类
最新评论

排序算法第三篇——归并排序

 
阅读更多


算法描述:

归并(Merge)排序是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。

对一个数组进行归并排序主要分为以下三步:

1、分解。将一个数组分为两个个数组。

2.、治之。对分好的两个数组,分别用归并排序算法进行排序。

3、归并。将两个数组归并。

Java源代码:

运行结果:

排序前:
824 692 469 255 518 492 177 403 325 350
合并 第1到1之间的元素 和 第2到2之间的元素
692 824 469 255 518 492 177 403 325 350
合并 第1到2之间的元素 和 第3到3之间的元素
469 692 824 255 518 492 177 403 325 350
合并 第4到4之间的元素 和 第5到5之间的元素
469 692 824 255 518 492 177 403 325 350
合并 第1到3之间的元素 和 第4到5之间的元素
255 469 518 692 824 492 177 403 325 350
合并 第6到6之间的元素 和 第7到7之间的元素
255 469 518 692 824 177 492 403 325 350
合并 第6到7之间的元素 和 第8到8之间的元素
255 469 518 692 824 177 403 492 325 350
合并 第9到9之间的元素 和 第10到10之间的元素
255 469 518 692 824 177 403 492
325 350
合并 第6到8之间的元素 和 第9到10之间的元素
255 469 518 692 824
177 325 350 403 492
合并 第1到5之间的元素 和 第6到10之间的元素
177 255 325 350 403 469 492 518 692 824

该算法的时间复杂度为O(nlog2n),算法是稳定的。

分享到:
评论

相关推荐

    算法可视化系列——排序算法——插入排序

    它也是其他更高效排序算法(如快速排序、归并排序)的基础。 综上所述,插入排序是计算机科学中基础且重要的排序算法之一,理解和掌握它的原理和实现方式对提升编程技能具有重要意义。通过算法可视化,我们可以更好...

    快速排序算法以及归并算法

    根据给定的文件信息,我们将深入探讨两种经典的排序算法——快速排序和归并排序,并结合Java语言实现进行详细解析。 ### 快速排序算法 快速排序是一种高效的排序算法,采用分而治之的策略,其核心思想是选择一个...

    数据结构课程设计 实验报告 ——归并排序

    ### 数据结构课程设计实验报告——归并排序 #### 实验目的与背景 归并排序是一种典型的分治策略算法,广泛应用于大数据集的排序任务中。本实验旨在通过具体实践掌握归并排序的基本原理及其实现方法,并理解其在...

    算法可视化系列——排序算法——冒泡排序

    同时,通过分析和优化冒泡排序,可以进一步探讨和学习更高级的排序算法,如快速排序、归并排序等。 标签"源码"提示我们,可能包含的是冒泡排序的代码实现,而"工具"可能是指用于演示或测试排序算法的软件。在提供的...

    第6课 统计数字——归并排序(count)-2020.04.11.pdf

    在介绍归并排序之前,需要先了解一下快速排序算法,因为文档提到第5课已经用快速排序的方法解决过相同的问题。快速排序是一种基于分治策略的排序算法,其基本思想是:在数组中选择一个基准元素,然后将数组中小于...

    (陈慧南 第3版)算法设计与分析——课后习题答案(1~8章)

    3. **第三章:排序算法** 排序是计算机科学中最常见的问题之一,本章介绍了一系列排序算法,如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。这些算法各有优劣,根据不同的场景选择合适的排序方法...

    算法设计与分析——C++ 语言描述[陈慧南编著][电子教案]

    例如,第01章可能介绍算法基础和C++编程环境,第05章可能深入讲解排序算法,而第08章可能涉及图论和网络流算法等。每章之间的内容相互联系,共同构建出完整的算法设计与分析知识体系。通过学习这些章节,读者可以...

    用C语言实现常用排序算法

    本项目旨在实现并比较六种经典的排序算法——直接插入排序、折半插入排序、起泡排序、简单选择排序、堆排序以及2-路归并排序,使用C语言编程。为了全面评估这些算法,我们将在一组随机生成的30000个整数上运行它们,...

    最快的排序算法 图解八大排序算法——我见过的最详细的讲解(转),排序算法数据结构

    选择排序是一种简单的排序算法,思路是选择数组中的最小元素,和第一个元素交换,然后在剩下的元素中选择最小元素,和第二个元素交换,以此类推,直到排序完成。时间复杂度为 O(n^2),空间复杂度为 O(1)。Java 代码...

    排序算法——选择排序.docx

    选择排序是一种简单直观的排序算法,...在实际应用中,我们通常会使用其他更高效的排序算法,如快速排序、归并排序或堆排序等。然而,对于小规模数据或者对排序速度要求不高的情况,选择排序仍然是一个可行的解决方案。

    8种排序算法(选择排序 冒泡排序 快速排序等~)

    除了以上三种,还有其他五种排序算法也非常重要: 4. **插入排序(Insertion Sort)** 插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上...

    常用排序算法总结——数据结构

    因此,虽然直接插入排序简单,但效率不如其他高级排序算法,如归并排序和快速排序。 总的来说,理解各种排序算法的原理、特性以及它们在不同场景下的适用性,对于优化数据处理和提升程序性能至关重要。在实际应用中...

    算法与数据结构——c语言版+张乃孝

    书中可能涵盖了排序算法(如冒泡排序、插入排序、快速排序、归并排序)、查找算法(如线性搜索、二分查找)以及图算法(如深度优先搜索、广度优先搜索)等。这些基本算法的理解和熟练运用是每个程序员必备的技能。 ...

    算法设计经典题——王晓东编著(第三版)程序流程图加实验报告

    5. **第六章算法实现题**:这部分可能涵盖了各种算法的实现细节,比如排序算法(快速排序、归并排序等)、搜索算法(深度优先搜索、广度优先搜索)以及数据结构(栈、队列、树、图)的实现。 6. **第七章集合相等...

    算法设计与分析——C++ 语言描述[陈慧南编][电子教案].

    3. **第五章:排序算法** - 排序是计算机科学中最常见的问题,本章会介绍多种排序算法,如冒泡排序、选择排序、插入排序、快速排序、归并排序等,通过比较它们的时间复杂度和空间复杂度,理解不同排序方法的适用场景...

    《Java数据结构和算法》学习笔记(2)——4种简单排序算法

    这三种排序算法虽然效率不高,但对于小规模数据或者部分有序的数据,它们的表现可能并不差。此外,它们的简单性使得初学者容易理解和实现,是学习数据结构和算法的良好起点。 在实际开发中,我们往往使用更高效的...

    实验2第二个程序.zip_线性表的顺序存储实现——归并

    归并排序是一种分治算法,它的主要思想是将大问题分解成小问题来解决。在归并两个有序表的过程中,我们需要创建一个新的线性表LC,它包含LA和LB的所有元素,并且这些元素依然按照非递减的顺序排列。下面我们将详细...

    实验1_排序_算法设计与分析_

    在本实验"实验1_排序_算法设计与分析_"中,我们将探讨计算机科学中的核心概念——排序算法。排序是处理数据的重要步骤,特别是在数据分析、数据库管理和计算机图形学等领域。本实验的目标是理解和实现五种经典的排序...

Global site tag (gtag.js) - Google Analytics