归并排序
Posted O了吗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了归并排序相关的知识,希望对你有一定的参考价值。
#include"iostream" using namespace std; void show(int *a,int n){ for(int i = 0;i < n;i++){ cout<<a[i]<<ends; } cout<<endl; } void merge(int *a,int *b,int l,int center,int rend){ int lend = center,r = center + 1,l1 = l,i = l; while(l <= lend && r <= rend){ if(a[l] < a[r]){ b[i++] = a[l++]; } else{ b[i++] = a[r++]; } } while(l <= lend){ b[i++] = a[l++]; } while(r <= rend){ b[i++] = a[r++]; } for(int j = l1;j < i;j++){ a[j] = b[j]; } } void mSort(int *a,int *b,int l,int r){ if(l < r){ int center = (l + r) / 2; mSort(a,b,l,center); mSort(a,b,center + 1,r); merge(a,b,l,center,r); //合并 } } void mergeSort(int *a,int n){ int *b = new int[n]; mSort(a,b,0,n - 1); delete []b; } int main(){ const int n = 10; int a[n]; for(int i = 0;i < n;i++){ a[i] = n - i; } show(a,n); mergeSort(a,n); show(a,n); return 0; }
以上是关于归并排序的主要内容,如果未能解决你的问题,请参考以下文章