标签:blog io os for sp div log 代码 算法
前几天写的归并排序算法是不想输入具体的待排序数的个数,数组输入完毕后,用-1结束。这样一来程序不能排-1,有些不是很爽,算了,就在前面加个带输入数组的长度吧。代码如下:
#include<iostream> using namespace std; int a[100]; int flag; int n; void vector_initial(); void print_vector(); void MERGE_sort(int p,int r); void MERGE_combine(int p,int q,int r); int main() { vector_initial(); MERGE_sort(0,n); print_vector(); return 0; } void vector_initial() { int i=0; cout<<"请输入要排序的数的个数:"; cin>>n; while(i<n) { cin>>a[i]; i++; } n=n-1; } void print_vector() { for(int i=0;i<n;i++) cout<<a[i]<<" "; cout<<a[n]<<endl; } void MERGE_sort(int p,int r)//归并排序 { int q; if(p<r) { q=(p+r)/2; MERGE_sort(p,q); MERGE_sort(q+1,r); MERGE_combine(p,q,r); } } void MERGE_combine(int p,int q,int r) { int L[100]; int R[100]; int n1=q-p+1; int n2=r-q; for(int i=1;i<=n1;i++) L[i]=a[p+i-1]; for(int j=1;j<=n2;j++) R[j]=a[q+j]; L[n1+1]=10000; R[n2+1]=10000; i=1;j=1; for (int k=p;k<=r;k++) { if(L[i]<=R[j]) { a[k]=L[i]; i++; } else { a[k]=R[j]; j++; } } }
标签:blog io os for sp div log 代码 算法
原文地址:http://www.cnblogs.com/liutianyi10/p/4028317.html