归并排序--二路归并
2017-03-06 18:01
288 查看
归并排序时的时间复杂度为O(nlgn)其主要思想是分治法(divide and conquer),分就是要将n个元素的序列划分为两个序列,再将两个序列划分为4个序列,
直到每个序列只有一个元素,最后,再将两个有序序列归并成一个有序的序列再得到两个有序序列,再合成一个有序序列。。
#include <iostream>
#include <cstdio>
using namespace std;
void mergeSort(int jk[], int bo[], int left, int mid, int right){
int i = left, j = mid+1, k = left, l;
while(i <= mid && j <= right){
if(jk[i] > jk[j]) bo[k++] = jk[j++];
else bo[k++] = jk[i++];
}
while(i <= mid) bo[k++] = jk[i++];
while(j <= right) bo[k++] = jk[j++];
for(l = left; l < k; ++l)
jk[l] = bo[l];
}
void merge(int jk[], int bo[], int left, int right){
int mid;
if(left < right){
mid = (left+right)/2;
merge(jk, bo, left, mid);
merge(jk, bo, mid+1, right);
mergeSort(jk, bo, left, mid, right);
}
}
int main(){
int bo[15], jk[15] = {0, 5, 8, 1, 7, 9, 6, 0, 3, 4, 2};
merge(jk, bo, 1, 10);
for(int i = 1; i <= 10; ++i)
printf("%d ", jk[i]);
return 0;
}
直到每个序列只有一个元素,最后,再将两个有序序列归并成一个有序的序列再得到两个有序序列,再合成一个有序序列。。
#include <iostream>
#include <cstdio>
using namespace std;
void mergeSort(int jk[], int bo[], int left, int mid, int right){
int i = left, j = mid+1, k = left, l;
while(i <= mid && j <= right){
if(jk[i] > jk[j]) bo[k++] = jk[j++];
else bo[k++] = jk[i++];
}
while(i <= mid) bo[k++] = jk[i++];
while(j <= right) bo[k++] = jk[j++];
for(l = left; l < k; ++l)
jk[l] = bo[l];
}
void merge(int jk[], int bo[], int left, int right){
int mid;
if(left < right){
mid = (left+right)/2;
merge(jk, bo, left, mid);
merge(jk, bo, mid+1, right);
mergeSort(jk, bo, left, mid, right);
}
}
int main(){
int bo[15], jk[15] = {0, 5, 8, 1, 7, 9, 6, 0, 3, 4, 2};
merge(jk, bo, 1, 10);
for(int i = 1; i <= 10; ++i)
printf("%d ", jk[i]);
return 0;
}
相关文章推荐
- 归并排序——二路归并排序
- 归并排序、二路归并排序
- 二路归并排序
- 微软笔试题 大型文件外部排序(二路归并和k路归并的实现和比较)
- 二路归并排序
- 二路归并排序
- Linux C学习笔记-排序算法6-二路归并排序
- 二路归并非递归排序Java实现
- 二路归并排序,利用递归,时间复杂度o(nlgn)
- 二路归并排序
- 二路归并排序及数组中逆序对的计算
- 二路归并排序
- 二路归并排序及其改进方法
- MIT:算法导论——1.算法分析——插入排序 vs 二路归并排序
- 二路归并排序_2011_10_11
- 数据结构经典排序---二路归并排序
- 二路归并排序
- 微软笔试题 大型文件外部排序(二路归并和k路归并的实现和比较)
- 排序算法大集锦_二路归并排序_2&3(分治思想)
- 二路归并排序简介及其并行化