#include <iostream>
using namespace std;
//输出数组
void show(int a[],int n)
{
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<"/n";
}
//交换元素位置:
void swap(int *a,int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
//冒泡排序
void maopao(int a[],int n)
{
int i , j ;
for(i=1; i <n ; i++)
{
for(j=0;j<n-1;j++)
{
if(a[i]>a[j])
{
swap(&a[i],&a[j]);
}
}
}
}
//插入排序:
void InsertionSort(int a[],int n)
{
int i , j ,temp;
for(i=1;i<n;i++)
{
j=i;
temp=a[i];
while(j>0 && temp<a[j-1])
{
a[j]=a[j-1];
j--;
}
a[j]=temp;
}
}
// 选择排序:
void SelectionSort(int a[],int n)
{
int i , j ,max;
for (i = 0; i < n-1; i++)
{
max = i;
for (j = i+1; j < n; j++)
{
if (a[j] >a[max])
{
swap(&a[i],&a[j]);
}
}
}
}
//希尔排序:
void xier(int a[],int n)
{
int i , j , gap=n,flag;
while(gap>1)
{
gap=gap/2;
do{
flag=0;
for(i=0;i<=n-gap;i++)
{
j=i+gap;
if(a[i]<a[j])
{
swap(&a[i],&a[j]);
flag=1;
}
}
}while(!flag);
}
}
//快速排序:
void quicksort(int a[] ,int s , int t)
{
int i , j , temp;
if(s<t)
{
i=s;
j=t+1;
while(1)
{
do i++;
while(!(a[s]>=a[i]||i==t));
do j--;
while(!(a[s]<=a[j])||j==s);
if(i<j)
swap(&a[i],&a[j]);
else
break;
}
swap(&a[s],&a[j]);
quicksort(a,s,j-1);
quicksort(a,j+1,t);
}
}
void main()
{
int a[10]={3,2,9,8,6,7,5,1,4};
cout<<"冒泡排序"<<endl;
maopao(a,9);
show(a,9);
cout<<"插入排序"<<endl;
InsertionSort(a,9);
show(a,9);
cout<<"选择排序"<<endl;
SelectionSort(a,9);
show(a,9);
//xier(a,9);
//show(a,9);
cout<<"快速排序"<<endl;
quicksort(a,0,8);
show(a,9);
}