归并排序
2016-03-18 22:50
211 查看
归并排序
*
解决了自己对数组内部排序的问题
*
—————————
#include<stdio.h> #include<stdlib.h> void Merge(int a[], int low, int mid, int high) { int i, j,k; int * b = (int *)malloc((high - low + 1)*sizeof(int)); // 临时创建一个复制数组,有点动态建数组的感觉,^_^ for ( k = low; k <= high; k++) //进行数组复制 { b[k] = a[k]; } for (i = low, j = mid + 1, k = i; i <= mid &&j <= high; k++) { if (b[i] < b[j]) a[k] = b[i++]; else { a[k] = b[j++]; } } while (i <= mid) a[k++] = b[i++]; while (j <= high) a[k++] = b[j++]; } void Merge_Sort(int a[], int low, int high) { int mid = (low + high) >> 1; if (low < high) { Merge_Sort(a, low, mid); Merge_Sort(a, mid + 1, high); Merge(a, low, mid, high); } } void main() { int a[5] = { 1, 3, 5, 2, 4 }; Merge_Sort(a, 0,4); for (int i = 0; i < 5; i++) printf("%d\t", a[i]); getchar(); }
相关文章推荐
- centos7 无线网卡驱动的安装及无线网络的配置
- self.x和_x区别
- SQL Server中TOP子句可能导致的问题以及解决办法
- 序列化与反序列化总结(Serializable和Parcelable)
- JUnit 3.8 让所有测试程序 实现 复合的测试(TestSuite)
- android broadcastReceiver学习
- C语言使用const定义数组时的错误原因
- nsoj L. Find a way
- 条款40:将std::atomic用于并发,而volatile用于专有内存
- 几个小例子让你分清super和this
- yum list
- 建立一颗多叉树
- 1004-格子中输出
- android studio NDK-JNI调用
- hdu 5640 King's Cake(模拟)
- 输出二叉树第n个节点
- 改变Edit的光标(使用CreateCaret,ShowCaret和LoadBitmap三个API函数)
- 使用T-SQL找出执行时间过长的作业
- Linux内核分析学习笔记(一)
- Linux内核设计第四周——扒开系统调用三层皮