KeyWords:Insertion_sort(*array,length);Merge_sort(*array,length);
AC CODE:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iostream>
using namespace std;
void Insertion(int * num ,int len,int *array_input);
bool array_equal(int * num,int *array_input,int len);
void Merge(int *num,int len,int *array_input);
int main()
{
int n;
cin>>n;
//cout<<n<<endl;
int * num1 , *num2;
num1 = (int *)malloc(sizeof(int)*n);
num2 = (int *)malloc(sizeof(int)*n);
int *array_input;
array_input =(int *)malloc(sizeof(int)*n);
for(int i = 0 ; i < n ; i ++){
cin>>num1[i];
num2[i] = num1[i];
}
for(int i = 0 ; i < n ; i ++){
cin>>array_input[i];
}
Insertion(num1,n,array_input);
Merge(num2,n,array_input);
/*int *p = Insertion(num,n);
for(int i = 0 ; i < n ; i ++){
cout<<p[i]<<" ";
}*/
return 0;
}
void Insertion(int * num ,int len,int *array_input)
{
int temp;
bool flag_array_equal = false;
for(int i = 0+ 1 ; i < len ; i ++){
int j = i;
while(num[j] < num[j-1]){
/*swap(num , j-1 , j);*/
temp = num[j-1];
num[j-1] = num[j];
num[j] =temp;
j--;
}
if(flag_array_equal){
cout<<"Insertion Sort"<<endl;
for(int i = 0 ; i < len ; i ++){
if(i < len-1){
cout<<num[i]<<" ";
}
else{
cout<<num[i];
}
}
return;
}
flag_array_equal = array_equal(num,array_input,len);
}
return;
}
void Merge(int *num,int len,int *array_input)
{
bool flag_array_equal = false;
for(int step = 2 ; step <= len ;step *=2){
int start;
for(start = 0 ; start+step < len ; start += step){
sort(num+start,num+start+step); //按照固定的步长对数组进行排序
}
sort(num+start,num+len);// sort 最后剩下的几个位置
if(flag_array_equal){
cout<<"Merge Sort"<<endl;
for(int i = 0 ; i < len ; i ++){
if(i < len-1){
cout<<num[i]<<" ";
}
else{
cout<<num[i];
}
}
}
//test
/*for(int i = 0 ; i < len ; i ++){
cout<<num[i]<<" ";
}*/
flag_array_equal = array_equal(num,array_input,len);
}
}
bool array_equal(int * num,int *array_input,int len)
{
for(int i = 0 ; i < len ; i ++){
if(num[i] !=array_input[i]){
return false;
}
}
return true;
}