11.2 对数组归并排序
2015-06-24 12:15
197 查看
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #define LEN 8 int a[LEN] = { 5,2,4,7,1,3,2,6 }; void merge(int start, int mid, int end) { int n1 = mid - start + 1; int n2 = end - mid; int left[LEN], right[LEN]; int i, j, k; for (i = 0;i < n1;i++) left[i] = a[start + i]; for (j = 0;j < n2;j++) right[j] = a[mid + 1 + j]; i = j = 0; k = start; while (i < n1&&j < n2) if (left[i] < right[j]) a[k++] = left[i++]; else a[k++] = right[j++]; while (i < n1) a[k++] = left[i++]; while (j < n2) a[k++] = right[j++]; } void sort(int start, int end) { int mid; if (start < end) { mid = (start + end) / 2; printf("sort (%d-%d,%d-%d) to %d %d %d %d %d %d %d %d \n", start, mid, mid + 1, end, a[0],a[1], a[2], a[3], a[4], a[5], a[6], a[7]); sort(start, mid); sort(mid + 1, end); merge(start, mid, end); printf("merge(%d-%d,%d-%d) to %d %d %d %d %d %d %d %d ", start, mid, mid + 1, end, a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7]); printf("\n"); } } int main(void) { sort(0, LEN - 1); getchar(); return 0; }
相关文章推荐
- 【技术分享】很详细的JS底层分析
- jq 获取select text
- 介绍JavaScript的一个微型模版
- 二叉树链表的前,中,后序遍历
- android windows 上JNI编程
- tomcat7通过setenv.bat设置JAVA_HOME
- HTMl5的sessionStorage和localStorage
- php加密解密
- How to use tcpdump on Android
- 按项目时间段,爬虫对状态码进行统计
- js实现a标签超链接提交form表单的方法
- php 调用.net的webservice 需要注意的
- python正则表达式复习1
- 完成端口中WSAENOBUFS错误的解决方案
- Hello, Dart!
- Android项目 三 冷笑话页面卡片式样式
- LeetCode|Substring with Concatenation of All Words(所有单词的串联的子字符串)
- TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流
- Python中的下划线详解
- mysql安装时到start service时就不响应了如何解决?