归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。

分而治之:

代码一:

//归并排序
#include "stdio.h"
#include <stdlib.h>
void mergeSort(int *arr,int length);
void sortProcess(int *arr, int L, int R);
void merge(int *arr,int L,int mid,int R);
int main(void)
{int i=0;int array[10]={2,7,3,1,6,0,6,5,9,5};mergeSort(array,10);for(i=0;i<10;i++)printf("%d,",array[i]);
}
void mergeSort(int *arr,int length)
{if(arr==NULL || length<2)return;sortProcess(arr,0,length-1);
}
void sortProcess(int *arr, int L, int R)
{int i=0;int mid=(L+R)/2;if(L==R)return;   sortProcess(arr,L,mid);sortProcess(arr,mid+1,R);merge(arr,L,mid,R);}
void merge(int *arr,int L,int mid,int R)
{int help[R-L+1];int i=0;int p1=L; int p2=mid+1;while(p1<=mid&&p2<=R){help[i++]=arr[p1]>arr[p2]? arr[p2++]:arr[p1++]; }while(p1<=mid){help[i++]=arr[p1++];}while(p2<=R){help[i++]=arr[p2++];}for(i=0;i<R-L+1;i++){arr[L+i]=help[i];}
}

代码一:

#include<stdio.h>
void Mergesort(int *num,int left,int right);
void Merge(int *num,int left,int middle,int right);
void swap(int *a,int *b);
int main()
{int num[10]={3,6,4,2,5,1,9,2,0,8};int length=sizeof(num)/sizeof(num[0]);int k;Mergesort(num,0,length-1);for(k=0;k<length;k++)printf("%d ",num[k]);
}
void Mergesort(int *num,int left,int right)
{int middle=(left+right)/2;if(left==right)return ;Mergesort(num,left,middle);Mergesort(num,middle+1,right);Merge(num,left,middle,right);
}
void Merge(int *num,int left,int middle,int right)
{for(int i=middle+1;i<=right;i++){for(int j=i;j>left;j--){if(num[j]<num[j-1])swap(&num[j],&num[j-1]);}}
}
void swap(int *a,int *b)
{int temp;temp=*a;*a=*b;*b=temp;
}

归并排序(C语言版)相关推荐

  1. 排序算法之归并排序 ( C语言版 )

    归并排序 :(Merge Sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即 ...

  2. 资料分享:送你一本《数据结构(C语言版)》电子书!

    要想写出可复用.可扩展.易维护.灵活性好的代码,「数据结构」这一关必须要过啊! 在数据结构与算法的众多教材中,奉为经典的当属清华大学严蔚敏老师的著作.很多学校也选择这本书作为考研指定教材. 正在学习数 ...

  3. 资料分享:送你一本《数据结构(C#语言版)》电子书!

    对于信息类专业的学生而言,数据结构与算法是一门必修的课程.只有学好这门课程,熟练掌握线性表.栈.队列.树.图等基本结构,以及在这些结构上的各种算法,才能利用计算机去解决实际问题. 如何学好这门课程呢, ...

  4. 数据结构(C语言版) 第 八 章 排序 知识梳理 + 习题详解

    目录 一.归并排序 二.交换排序 1.快速排序 2.冒泡排序 三.插入排序 1.直接插入排序(基于顺序查找) 2.折半插入排序(基于折半查找) 3.希尔排序(基于逐趟缩小增量) 四.选择排序 0.直接 ...

  5. 数据结构(C语言版) 第二章 线性表 知识梳理+作业习题详解

    目录 一.线性表顺序存储结构(顺序表) 0.线性表的基本概念 1.样例引入:多项式相加 二.线性表链式存储结构(链表) 0.链表的基本概念 1.前插法代码实例 2.链表尾插法完整代码附带各种操作 三. ...

  6. 数据结构c语言版实验报告2,数据结构(C语言版) 实验报告 (2)

    <数据结构(C语言版) 实验报告 (2)>由会员分享,可在线阅读,更多相关<数据结构(C语言版) 实验报告 (2)(15页珍藏版)>请在人人文库网上搜索. 1.数据结构(C语言 ...

  7. 数据结构c语言版朱战立报告,数据结构(C语言版)

    本书是Sedgewick彻底修订和重写的C算法系列的第一本.全书分为四部分,共16章.第一部分"基础知识"(第1-2章)介绍基本算法分析原理.第二部分"数据结构" ...

  8. 数据结构C语言版字符串,数据结构c语言版

    数据结构c语言版是一款非常使用的数据结构课程的编写和教材:它也可将软件作为学习数据结构.算法C程序设计的参数教材,只需要用户学习该软件之后,就算遇到在繁杂的代码也可以清晰的写出来,本书的钱半部分主要介 ...

  9. 武汉工程大学c语言作业,武汉工程大学2016考研《数据结构(C语言版)》考试大纲...

    2016考研学习交流群:410257364 考试大纲作为考研学子备考复习的方向指南,每年都备受关注,尤其是当年新考试大纲.建议各位考生朋友,在借助往年考试大纲进行复习时,及时关注新考试大纲,以便积极应 ...

  10. 经典的十种排序算法 C语言版

    经典的十种排序算法(C语言版) 1.冒牌排序 冒牌排序的特点 ​ 一趟一趟的比较待排序的数组,每趟比较中,从前往后,依次比较这个数和下一个数的大小,如果这个数比下一个数大,则交换这两个数,每趟比较后, ...

最新文章

  1. python27安装-linux下安装python27 nginx 和uwsgi
  2. postgresql兴建用户_PostgreSQL 12.2, 11.7, 10.12, 9.6.17, 9.5.21, 和 9.
  3. JUC编程入门(高并发)
  4. compoundbutton(compoundbutton是什么意思)
  5. js截取中英文字符串
  6. JQuery实现防抖节流
  7. 计算机网络误区——可以通过非ARP报文(正常数据包)学习ARP表项吗?
  8. CSS媒体查询(@media)全面解析
  9. 有哪些wordpress企业网站主题推荐?
  10. BeanUtils.populate的作用
  11. 微信小程序怎么添加到主屏幕将微信小程序放到手机桌面?
  12. 多态的概念,特点和优缺点
  13. 从Internet时间服务器获取标准时间
  14. 第一次写“辅助”软件(微信游戏跳一跳)
  15. OneAuth 5月报:关于身份 少即是多
  16. 华为云大数据中台架构设计方案
  17. 告别单身不容易 程序员告别单身功略!
  18. TT软件用户参考手册
  19. 雅虎市值_雅虎! 启动BrowserPlus,计划对其进行开源
  20. 实验5 支持向量机分类实验

热门文章

  1. 游戏全球化美术风格差异分析
  2. 房车接父母“反向过年”成春运新亮点
  3. 系统集成项目管理工程师高频考点(第一章)
  4. 大货跟踪程序精简版v1.20200731
  5. l7sa008b故障代码_华硕主板故障维代码指南
  6. 使用Android Studio开发一个简易的音乐播放器
  7. 零基础入门WordPress安装详细教程(图文)
  8. HarmonyOS荣耀8x,不忘老机型 荣耀9X系列被曝今年将升级HarmonyOS
  9. 10种世界上最美的花
  10. java算法竞赛:StringBuilder更省空间更快速