归并算法(高效)

简介: 本文将介绍并归算法

1.什么是并归算法?

归并排序,是创建在归并操作上的一种有效的排序算法。算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。归并排序思路简单,速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列,简单的来说就是将两个有序子列合并成一个完全有序的子列


2.归并算法的实现

具体实现方法:将数组arr1的第一个元素与数组arr2的第一个元素比较,将较小的一个放入arr3中,然后将死一个元素较小的数组的下表向前加1,再将下标加1对应的元素的与较大的元素比较,将两者中较小的一个放入arr3中......一直到1或者2的数组中数组元素尽皆遍历结束,将剩下一个数组中剩下的元素放入arr3中


例如:1<2,将1放入arr3,下标加1,然后将6与2比较,2<6,将2放入arr3,下标加1,然后将3与6比较,3<6,将3放入arr3中,下标加1,再将4与6比较,4<6,将4放入arr3中,下标加1,再将10与6比较,6<10,将6放入arr3中,下标加1,再将8与10比较,将8放入arr3中,下标加1,再将9与10比较,9<10,将9放入arr3中,下标加1,再将46与10比较,10<46,将10放入arr3中,下标加1,将45与46比较,45<46,将45放入arr3中,下标加1,此时数组arr2已经完成,将arr1剩余的元素全部放入arr3中即可

#include<stdio.h>
int main()
{
  int arr1[5] = { 1,6,8,9,46 };
  int arr2[5] = { 2,3,4,10,45 };
  int arr3[10] = { 0 };
  int i = 0, j = 0, z = 0;
  while (i<5&&j<5)
  {
    if (arr1[i] > arr2[j])
    {
      arr3[z] = arr2[j];
      z++;
      j++;
    }
    else
    {
      arr3[z] = arr1[i];
      z++;
      i++;
    }
  }
  if (i == 5)
  {
    while (z < 10)
    {
      arr3[z] = arr2[j];
      z++;
      j++;
    }
  }
  if (j == 5)
  {
    while (z < 10)
    {
      arr3[z] = arr1[i];
      z++;
      i++;
    }
  }
  for (i = 0; i < 10; i++)
  {
    printf("%d ", arr3[i]);
  }
  return 0;
}

3.代码讲解

用i控制数组arr1,用j控制数组arr2,用z控制数组arr3,每当有一个元素进入数组arr3中时,将这个元素的下标加1,控制arr3数组的下标也加1。最后,分两种情况,分别对两种情况对应的数组剩余的元素桉顺序放入arr3数组中即可


4.总结

并归算法即可用于从小到大,也可用于从大到小的顺序,甚至中间有相等的数也可以进行处理,且效率和时间复杂度相对于我们常用的冒泡排序都有优势


相关文章
|
3月前
|
数据可视化 搜索推荐 Python
Leecode 刷题笔记之可视化六大排序算法:冒泡、快速、归并、插入、选择、桶排序
这篇文章是关于LeetCode刷题笔记,主要介绍了六大排序算法(冒泡、快速、归并、插入、选择、桶排序)的Python实现及其可视化过程。
32 0
|
5月前
|
搜索推荐 算法
十大排序算法-快排-希尔-堆排-归并-冒泡-桶排-选择-插入-计数-基数
十大排序算法-快排-希尔-堆排-归并-冒泡-桶排-选择-插入-计数-基数
算法:分治思想处理归并递归问题
算法:分治思想处理归并递归问题
|
6月前
|
搜索推荐 C++ Python
Python排序算法大PK:归并VS快速,谁才是你的效率之选?
【7月更文挑战第13天】归并排序** 使用分治法,稳定且平均时间复杂度O(n log n),适合保持元素顺序和并行处理。
42 5
|
7月前
|
算法 C语言
数据结构和算法——归并排序(有序子列的归并、递归算法、非递归算法、思路图解、C语言代码)
数据结构和算法——归并排序(有序子列的归并、递归算法、非递归算法、思路图解、C语言代码)
47 0
|
搜索推荐 Java
排序算法-冒泡、选择、堆、插入、归并、快速、希尔
排序算法-冒泡、选择、堆、插入、归并、快速、希尔
39 0
|
8月前
|
存储 算法 搜索推荐
【算法】七大经典排序(插入,选择,冒泡,希尔,堆,快速,归并)(含可视化算法动图,清晰易懂,零基础入门)
【算法】七大经典排序(插入,选择,冒泡,希尔,堆,快速,归并)(含可视化算法动图,清晰易懂,零基础入门)
266 1
|
8月前
|
存储 算法 搜索推荐
【算法系列篇】分治-归并
【算法系列篇】分治-归并
|
8月前
|
算法 搜索推荐
归并算法:分治而治的高效算法大揭秘(图文详解)
归并算法:分治而治的高效算法大揭秘(图文详解)
114 0
|
算法 搜索推荐 前端开发
前端排序算法哪家强:冒泡、选择、插入、归并、快速,哪个才是最强者?
当谈到前端开发时,排序算法是必不可少的一部分。排序算法可以帮助我们对数据进行有效的排序,使其更具有结构和有序性。在前端领域中,有许多常见的排序算法,其中包括冒泡排序、选择排序、插入排序、归并排序和快速排序。让我们一起来了解这些算法以及它们的原理和特点,并通过具体的例子说明它们在实际开发中的应用。
147 0
前端排序算法哪家强:冒泡、选择、插入、归并、快速,哪个才是最强者?

热门文章

最新文章