归并排序的简易实现

来源:互联网 发布:苹果手机mac地址怎么查 编辑:程序博客网 时间:2024/05/16 12:39

归并排序:

原理简单,即多个有序数组合并成一个有序数组的排序。

其中二路归并是基础,一般书上都会有例子,这里笔者提供一个三路归并的例子。

#include<iostream>using namespace std;int func(int a1[],int a2[],int a3[],int n1,int n2,int n3,int al[18]){int i,j,k,t;int a[18]={0};for(i=0,j=0,k=0,t=0;t!=18;t++){if(i!=n1&&(j==n2||a1[i]<=a2[j])&&(k==n3||a1[i]<=a3[k])){a[t]=a1[i];i++;continue;}if(j!=n2&&(i==n1||a2[j]<a1[i])&&((k==n3)||a2[j]<=a3[k])){a[t]=a2[j];j++;continue;}if(k!=n3 && (i==1||a3[k]<a1[i])&&(j==n2||a3[k]<a2[j])){a[t]=a3[k];k++;continue;}}for(t=0;t<18;t++)al[t]=a[t];return 0;}int main(){int a1[5]={3,6,44,66,92};int a2[6]={2,5,67,76,88,99};int a3[7]={4,5,6,54,57,69,92};int a[18]={0};func(a1,a2,a3,5,6,7,a);for(int m=0;m<18;m++)cout<<a[m]<<" "<<endl;return 0;}


原创粉丝点击