归并排序
来源:互联网 发布:vs2015 python 编辑:程序博客网 时间:2024/06/16 12:54
#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++];
else
tmp[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;
}
// 交换函数
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++];
else
tmp[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
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- ORACLE 11G RAC 负载均衡
- Touch事件的传递机制
- apache-comnons系列之commons-cli1.4 学习笔记
- 414. Third Maximum Number
- L2-009. 抢红包
- 归并排序
- 51nod 1785 数据流中的算法
- K.O. ----- 配置文件没有提示
- 文章标题
- CSS(5)__CSS基本用法<选择器和一些特效>
- Android多渠道打包
- Master公式计算递归时间复杂度
- C++虚函数详解
- 【HDU 1863】畅通工程(最小生成树-水题)