// 实验1_1_随机数组合并排序.cpp : 定义控制台应用程序的入口点。 |
// |
#include "stdafx.h" |
#include<iostream> |
#include<cstdlib> |
#include<ctime> |
using namespace std; |
const int N = 10; |
int a[N]; |
void Merge( int left, int mid, int right){ |
int *temp = new int [right-left+1]; |
int i=left,j=mid+1,k=0; |
while (i<=mid&&j<=right){ |
if (a[i]<=a[j]) |
temp[k++]=a[i++]; |
else |
temp[k++]=a[j++]; |
} |
while (i<=mid) temp[k++]=a[i++]; |
while (j<=right) temp[k++]=a[j++]; |
for ( int i=0,k=left;k<=right;k++,i++) |
a[k] = temp[i]; |
delete []temp; |
} |
void Divide( int left, int right){ |
if (left<right){ |
int mid=(left+right)/2; |
Divide(left,mid); |
Divide(mid+1,right); |
Merge(left,mid,right); |
} |
} |
int _tmain( int argc, _TCHAR* argv[]) |
{ |
srand ((unsigned long ) time (0)); |
for ( int i=0;i<N;i++) |
a[i] = rand ()%100; |
cout<< "数组:" <<endl; |
for ( int i=0;i<N;i++) |
cout<<a[i]<< " " ; |
cout<<endl; |
Divide(0,N-1); |
cout<< "排序:" <<endl; |
for ( int i=0;i<N;i++) |
cout<<a[i]<< " " ; |
cout<<endl; |
return 0; |
} |