//
// main.cpp
// SuanFaDaoLun1
//
// Created by amengdev on 16/3/27.
// Copyright © 2016年 amengdev. All rights reserved.
//
#include <iostream>
using namespace std;
/*
//归并排序
//分治思想,分而治之,这里重要的是合并思路
void merge_sort(int arr[],int p,int r);
void merge(int arr[],int p,int q,int r);
int main()
{
int arr[10]={2,4,6,8,1,3,0,9,5,7};
merge_sort(arr, 0, 9);
for(int i=0;i<10;i++)
{
cout<<arr[i]<<endl;
}
return 0;
}
void merge_sort(int arr[],int p,int r)
{
if(p<r)
{
int q=(p+r)/2;
merge_sort(arr, p, q);
merge_sort(arr, q+1, r);
merge(arr,p,q,r);
}
}
void merge(int arr[],int p,int q,int r)
{
int n1=q-p+1;
int n2=r-q;
int arr1[n1+1];
int arr2[n2+1];
for(int i=0;i<n1;i++)
{
arr1[i]=arr[i+p];
}
arr1[n1]=100;
for(int j=0;j<n2;j++)
{
arr2[j]=arr[j+q+1];
}
arr2[n2]=100;
int i=0;
int j=0;
for(int k=0;k<(n1+n2);k++)
{
if(arr1[i]<arr2[j])
{
arr[k+p]=arr1[i];
i++;
}
else
{
arr[k+p]=arr2[j];
j++;
}
}
}
*/
/*
//习题:2.1-4,计算两个n位二进制整数,倒序输入,倒序输出
int main()
{
int arr1[5]={1,0,0,1,1};
int arr2[5]={1,1,0,1,1};
int arr3[6];
int key=0;
for(int i=0;i<5;i++)
{
arr3[i]=(arr1[i]+arr2[i]+key)%2;
key=(arr1[i]+arr2[i]+key)/2;
}
arr3[6]=key;
for(int i=0;i<6;i++)
{
cout<<arr3[i];
}
return 0;
}
*/
/*
//插入排序,元素非递减
//循环表达式,初始值,循环不变式,结束条件,结束后的处理
int main() {
int key;
int arr[10]={2,4,6,8,1,3,0,9,5,7};
for(int i=2;i<10;i++)
{
key=arr[i];
int j=i-1;
while (key<arr[j] && j>=0) {
arr[j+1]=arr[j];
j--;
}
arr[j+1]=key;
}
for(int i=0;i<10;i++)
{
cout<<arr[i]<<endl;
}
return 0;
}
*/