并归排序
来源:互联网 发布:锐捷网络2016财报 编辑:程序博客网 时间:2024/05/21 11:17
#include <stdio.h>#include <stdlib.h>#define SIZE 10void merge(int array[], int min, int max, int temp[]);//递归void mergesort(int a[], int first, int mid, int last, int temp[]); //合并交换排序void Mergesort(int array[], int n); //创建临时内存空间int main(void){int array[SIZE] = { 43, 6, 3, 26, 2, 7, 2, 9, 5, 7 };Mergesort(array, SIZE);for (int n = 0; n < SIZE; n++)//打印排序完后的临时数组printf("%d,", array[n]);return 0;}void mergesort(int array[], int min, int mid, int max, int temp[]) {int i = 0;int left_begin = min;//25-28行是确定分割为两个小数组的元素范围int left_end = mid;//前面的区间范围int right_begin = mid + 1;int right_end = max;//后面的区间范围while (left_begin <= left_end&&right_begin <= right_end) {//判断比较大小,并赋给临时数组if (array[left_begin] <= array[right_begin])temp[i++] = array[left_begin++];elsetemp[i++] = array[right_begin++];}while (left_begin <= left_end)//把上面还没循环完毕的数组,中剩下的元素直接取出放入temp数组temp[i++] = array[left_begin++];while (right_begin <= right_end)temp[i++] = array[right_begin++];for (int n = 0; n < i; n++)//把排序好临时的值再放回原先数组中array[min+n] = temp[n];}void merge(int array[], int min, int max, int temp[]) {if (min < max){//这里不理解可以用VS2013看,设置断点,然后启动调试->窗口,把局部变量之类的窗口调出来,一看就明白int mid = (min + max) / 2;merge(array, min, mid, temp);merge(array, mid + 1, max, temp);mergesort(array, min, mid, max, temp);}}//创建临时数组void Mergesort(int array[], int n){int *p = (int*)malloc(SIZE*sizeof(int));if (p != NULL){merge(array, 0, SIZE - 1, p);free(p);}elseprintf("sorry,please debug");}热烈欢迎各种批评、指正、讨论,经常在线
0 0
- 并归排序算法
- 并归排序
- 并归排序
- 并归排序
- 并归排序
- 并归排序
- 并归排序
- 并归排序
- 并归排序
- 并归排序(JAVA)
- 并归排序算法
- [算法]并归排序 【转】
- 归(合)并排序
- java之并归排序
- php实现并归排序
- Python排序算法-并归排序
- 排序 插入排序,冒泡排序,选择排序,并归排序
- 并归排序法求逆序数
- 数据结构 第五章 树和二叉树
- PL/SQL Developer安装配置实践
- phpMyAdmin 试图连接到 MySQL 服务器,但服务器拒绝连接。您应该检查 config.inc.php 中的主机、用户名和密码
- leetcode 删除有序链表中的重复元素
- J2EE 13规范(1)-Weblogic Server
- 并归排序
- 数据结构 第六章 图
- select检测到可读,调用read的情况
- 大掌门手游外挂(大掌门代练助手)
- [windows phone开发]本地相册
- 桌面widget详解(三)——桌面widget中的控件交互方法
- Don't know how to iterate over supplied "items" in <forEach>问题的解决方法
- fstream 中 ios::nocreate
- app审核