9、C程序 数组排序之[归并排序]
来源:互联网 发布:js eval函数 json 编辑:程序博客网 时间:2024/06/05 17:35
#include <stdio.h>// 交换函数void swap (int a[], int i, int j){int tmp = a[i];a[i] = a[j];a[j] = tmp;}// 打印数组void printA (int *a, int len){int i;for (i = 0; i < len; i++){printf ("%4d", a[i]);}printf ("\n");}// a 是数组 tmp 是缓冲区void merge(int *a, int left, int mid, int right, int *tmp){int i = left;int j = mid + 1;int k = 0;while (i <= mid && j <= right){if (a[i] > a[j])tmp[k++] = a[j++];elsetmp[k++] = a[i++];}while (i <= mid)tmp[k++] = a[i++];while (j <= right)tmp[k++] = a[j++];k = 0;for (i = left; i <= right; i++){a[i] = tmp[k++];}}void mergeSort(int *a, int left, int right, int *tmp){if (left >= right)return;int mid = (left + right)/2;mergeSort (a, left, mid, tmp); // 对左边部分进行归并排序mergeSort (a, mid+1, right, tmp); // 对右边部分进行归并排序merge (a, left, mid, right, tmp); // 将将部分数据进行归并}int main(){int a[10] = {9,6,8,0,3,1,2,4,7,5};int len = sizeof(a) / sizeof(a[0]);int tmp[10];mergeSort (a, 0, len-1, tmp);printA (a, len);return 0;}
阅读全文
0 0
- 9、C程序 数组排序之[归并排序]
- C程序之4:向量归并排序
- 归并排序之CC++程序
- C语言之归并排序
- C语言排序之归并排序篇
- 1、C程序 数组排序之[冒泡排序法]
- 3、C程序 数组排序之[鸡尾酒排序]
- 4、C程序 数组排序之[选择排序法]
- 5、C程序 数组排序之[插入排序法]
- 10、C程序 数组排序之[快速排序法]
- 排序之归并排序
- 排序之归并排序
- 排序之归并排序
- 排序之归并排序
- 排序之归并排序
- 排序之归并排序
- 排序之归并排序
- 排序之归并排序
- 随机分组
- Unity3D 官方文档 UGUI总览 一个将图片铺满整个屏幕的技巧、可视化组件的介绍
- 我的strcmp
- 易混淆概念(一)指针数组与数组指针
- 基于Token的WEB后台认证机制
- 9、C程序 数组排序之[归并排序]
- PowerDesigner使用
- 升级版的C语言-->C++
- 如何定位和解决Andorid的内存溢出问题(转载)
- POJ
- 编程练习2——03
- hdu--6078--Wavel Sequence(dp)
- android屏幕旋转,但是不重建生命周期
- 使用gcov和lcov测试代码覆盖率