`

排序算法(不断完善)

阅读更多

归并与归并排序算法:

MergeAB(Item c[] ,int N,Item b[],int M){
Int I,j,k;
  For(i=0,j=0,k=0;k<N+M;k++){
If(i==N){c[k]=b[j++];continue}
If(j==M){c[k]=a[i++];continue}
c[k]=a[i]>b[j]?a[i++]:b[j++];

}

原地归迸(开一个辅助数组,有一部分倒了序方便作哨兵):
Item aux[maxN];
Merge(Item a[],int l,int m,int r){
Int I,j,k;
For(i=m+1;i>l;i--)aux[i-1]=a[i-1];
For(j=m;j<r;j++)aux[r+m-j]=a[j+1];//倒序

For(k=l;k<=r;k++)
   If(aux[j]<aux[i])a[k]=aux[j--];
Else a[k]=aux[i++];
}
}

归迸排序:
Void mergesort(item a[],int l,int r){
Int m=(r+1)/2;
If(r<=1)return;
Mergesort(a,l,m);
Mergesort(a,m+1,r);
Merge(a,l,m,r);
}


自底向上的归并排序:
#define min(A,B)  (A<B)?A:B
Void mergesortBU(Item a[],int l,int r)
{
Int i,m;
For(m=1;m<=r-1;m=m+m)//m从一开始 ---宏观整合层
        For(i=l;i<=r-m;i+=m+m)//I 从L开始----微观层
            Merge(a,i,i+m-1,min(i+m+m-1,r));
}
 

 

分享到:
评论

相关推荐

    数据结构排序算法可视化的设计.pdf

    1. 冒泡排序:这是一种简单直观的排序算法,通过不断比较并交换相邻元素的位置,直到整个序列有序。其时间复杂度为O(n^2),空间复杂度为O(1),是一种稳定的排序方法。 2. 插入排序:插入排序的基本思想是将无序序列...

    淘宝“达人”筛选及推荐排序算法.doc

    ### 淘宝“达人”筛选及推荐排序算法 #### 摘要解析与核心知识点梳理 本文档探讨了淘宝平台上“达人”的筛选方法及推荐...此外,该推荐系统的设计还可以不断优化和完善,比如引入深度学习技术进一步提高推荐精度等。

    网页排序算法PageRank论文(Larry Page)

    **网页排序算法PageRank——谷歌搜索的核心技术** PageRank,由拉里·佩奇(Larry Page)和谢尔盖·布林(Sergey Brin)于1998年提出,是谷歌搜索引擎中用于网页排序的核心算法。这一算法彻底改变了互联网上的信息...

    排序可视化

    用户可以随机生成若干点,然后观察这些点如何通过排序算法变得有序,从而更好地理解每种排序算法的工作原理。 总之,排序可视化项目是学习和教学排序算法的优秀工具,它将理论与实践相结合,使编程学习更加直观有趣...

    算法设计与分析基础实验

    比如,排序算法可能会涉及冒泡排序、插入排序、快速排序、归并排序等;搜索问题可能包括二分查找、深度优先搜索(DFS)和广度优先搜索(BFS);图论问题则可能涵盖最短路径算法(Dijkstra或Floyd-Warshall)、最小...

    各种算法demo

    Floyd-Warshall算法则是解决所有节点对间最短路径的,通过不断更新矩阵来逐步完善最短路径信息。 总的来说,"各种算法demo"提供了丰富的实践场景,是学习和巩固算法知识的好资源。无论是准备面试还是提升编程素养,...

    算法练习-选择排序-少儿编程scratch项目源代码文件案例素材.zip

    此外,Scratch的可视化界面使得错误调试变得直观,孩子们可以在实践中不断调整和完善代码,增强编程信心。 在少儿趣味编程的教学过程中,像这样的案例学习非常有益。它将抽象的算法概念与具体的、有趣的游戏结合,...

    541127 算法新解.pdf

    每一次的改进都是对算法性能的一次提升,使得插入排序不仅在理论上更为完善,而且在实践中更为高效。 树结构中,二叉搜索树(BST)是讨论的重点。二叉搜索树作为一种特殊的树结构,在数据组织和搜索方面具有显著...

    数据结构与算法代码详解JAVA版

    在Java中,我们可以使用各种算法来解决实际问题,例如排序算法(冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等)、查找算法(顺序查找、二分查找、哈希查找)以及图论中的最短路径算法(Dijkstra算法...

    增长最快的六大-产业预测,排序算法数据结构.pdf

    这篇文章主要探讨了六个预计在未来增长速度最快的产业,其中包括电子及通讯产品制造业、汽车工业、建筑与房地产业、...排序算法和数据结构作为信息技术的基础工具,将在处理和理解这些产业数据的过程中发挥关键作用。

    算法(第四版).7z

    首先,排序算法是书中重点讲解的内容之一,包括快速排序、归并排序、堆排序、插入排序、选择排序等,这些算法在实际编程中应用广泛,对于优化数据处理速度至关重要。快速排序以其平均情况下的高效性能而著名,而归并...

    Python算法集合助力开发人员提升自己的算法能力解决各种复杂的问题

    这个算法集涵盖了排序算法(如冒泡排序、快速排序)、搜索算法(如二分查找、广度优先搜索)、图算法(如最短路径算法)、动态规划等多种算法和数据结构。在Python算法集中,每个算法都有相应的实现代码和说明文档,...

    C语言描述的数据结构与算法教程

    1. 排序算法:冒泡排序、选择排序、插入排序、快速排序、归并排序等,它们用于对数据进行有序排列。 2. 搜索算法:线性搜索、二分查找、哈希查找,用于在数据集中查找特定元素。 3. 图算法:深度优先搜索(DFS)、...

    算法导论第三版答案

    - **定义**:选择排序是一种简单直观的比较排序算法。它的工作原理是每次从未排序的部分找出最小(或最大)元素,存放到序列的起始位置。 - **实现过程**: - 首先确定一个最小值索引`smallest`为当前待排序区间的...

    常见算法介绍详解.pdf

    #### 排序算法 **排序算法**是计算机科学中的基础组成部分之一,它主要用于将一组数据按照一定的顺序排列。排序算法不仅被广泛应用于各种编程语言的标准库中,而且也是很多高级算法的基础。下面将详细介绍几种常见...

    《算法竞赛宝典》全部配套资源(非侵权)

    1. **题目集**:涵盖各种类型的算法问题,如排序、搜索、图论、动态规划、贪心算法等。这些题目可以帮助读者熟悉各种算法的应用场景,并通过实践提高解题能力。 2. **解题思路**:对于每个题目,都可能有详细的解题...

    常用算法程序集(C语言描述) (第三版)

    此外,第三版可能对前两版的内容进行了更新和完善,增加了新的算法示例或改进了原有的代码实现,以适应不断发展的计算机科学领域。无论你是初学者还是经验丰富的开发者,这本书都能提供宝贵的指导,帮助你深化对算法...

    算法导论的中文答案(word版)

    1. **排序算法**:如冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序等。这些算法的工作原理、时间复杂度和空间复杂度都会有所解释。 2. **查找算法**:包括线性查找、二分查找以及哈希表查找。其中,二...

Global site tag (gtag.js) - Google Analytics