#include<iostream>
using namespace std;
//--------------------快速排序------------------------
void quicksort_cld(int a[],int left,int right)
{
int i=left,j=right;
if(i<j) //递归的终止条件一定要记得判断
{
int x=a[i];
while(i<j)
{
while(i<j && a[j]>x)
j--;
if(i<j)
{
a[i]=a[j];
i++;
}
while(i<j && a[i]<x)
i++;
if(i<j)
{
a[j]=a[i];
j--;
}
}
a[i]=x;
quicksort_cld(a,left,i-1);
quicksort_cld(a,i+1,right);
}
}
void quicksort(int a[],int n)
{
if(a==NULL||n<=1) return;
quicksort_cld(a,0,n);
}
//-------------------------输出-------------------------
void print(int a[],int n)
{
for(int i=0;i<=n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
//---------------------归并排序----------------------------
void mergersort_cld_cld(int a[],int left,int mid,int right,int p[])
{
int startx=left,starty=mid+1;
int endx=mid,endy=right;
int temp=0;
while(startx<=endx && starty<=endy)
{
if(a[startx]<a[starty])
{
p[temp++]=a[startx++];
}
else
{
p[temp++]=a[starty++];
}
}
while(startx<=endx)
{
p[temp++]=a[startx++];
}
while(starty<=endy)
{
p[temp++]=a[starty++];
}
for(int i=0;i<temp;i++)
{
a[left+i]=p[i];
}
}
void mergersort_cld(int a[],int left,int right,int p[])
{
if(left<right)
{
int mid=(right+left)/2;
mergersort_cld(a,left,mid,p);
mergersort_cld(a,mid+1,right,p);
mergersort_cld_cld(a,left,mid,right,p);
}
}
void mergersort(int a[],int n)
{
if(a==NULL || n<=1) return ;
int *p=new int[n];
mergersort_cld(a,0,n,p);
delete[] p;
}
//-------------------------堆排序-------------------------------
void make_max_heap(int a[],int n)
{
if(a==NULL||n<=1) return ;
int mid=n/2-1;
for(int i=mid;i>=0;i--)
{
int j=2*i+1; int temp=a[i];
while(j<=n)
{
if(j+1<=n&&a[j+1]>a[j])
j++;
if(a[i]>a[j])
break;
a[i]=a[j];
i=j;
j=2*i+1;
}
a[i]=temp;
}
}
void heapsort(int a[],int n)
{
make_max_heap(a,n);
swap(a[0],a[n]);
for(int i=n-1;i>1;i--)
{
make_max_heap(a,i);
swap(a[i],a[0]);
}
}
//---------插入排序--------------
void insert(int a[],int n)
{
for(int i=1;i<=n;i++)
{
int temp=a[i];
int j=i;
while(j>=1)
{
if(temp<a[j-1])
{
a[j]=a[j-1];
j--;
}
else
break;
}
a[j]=temp;
}
}
//------------------冒泡排序---------------------
void myswap(int &a,int &b)
{
int c=a;
a=b;
b=c;
}
void buddlesort(int a[],int n)
{
int flag=n;
int k;
while(flag>0)
{
k=flag;
flag=0;
for(int i=0;i<k-1;i++)
{
if(a[i]>a[i+1])
{
myswap(a[i],a[i+1]);
flag=i+1;
}
}
}
}
int main()
{
int list[10]={5,7,8,9,6,4,15,2,35,56};
//for(int i=10;i>0;i--)
//{
// list[i-1]=11-i;
//}
print(list,9);
//quicksort(list,9);
//mergersort(list,9);
// heapsort(list,9);
// insert(list,9);
buddlesort(list,9);
print(list,9);
system("pause");
return 0;
}