/*


Sort


programmer:qpz



time:2014-11-02



*/



#include <stdio.h>



#define MAX 10



//冒泡排序法



void BubbleSort(int *data,int n);



//直接插入排序法



void StraightInsertion(int *data,int n);



//选择排序法



void choiceSort(int *data,int n);



void PrintArr(int *,int);



//void SortVerdict(bool n);



int main(void)



{


int a[MAX]={5,2,92,28,25,52,29,59,9,55};



// bool n;


PrintArr(a,MAX);


BubbleSort(a,MAX);


StraightInsertion(a,MAX);



choiceSort(a,MAX);


PrintArr(a,MAX);


return 0;



}



void PrintArr(int *a,int n)



{


int i;


for(i=0;i<n;i++){


printf("%3d",a[i]);


}


printf("\n");



}



//冒泡排序



void BubbleSort(int *data,int n)



{



int i,j;



int t,flag=1;



for(i=0;i<n&&flag;i++){


flag=0;


for(j=n-1;j>i;j--){


if(data[j]<data[j-1]){




data[j]=data[j-1];


data[j-1]=t;


flag=1;


}//if


}//for



}//for



}



//直接插入排序



void StraightInsertion(int *data,int n)



{


int p,i;


int j;


for(i=1;i<n;i++){


p=data[i];//保存无序区间的第一个值


//寻找插入点


for(j=i-1;j>=0&&data[j]>p;j--){ data[j+1]=data[j];}


//插入


data[j+1]=p;


} //for



}



//直接选择排序法



void choiceSort(int *data,int n)



{


int i,j,min;


for(i=0;i<n;i++){


for(j=i,min=i;j<n;j++){


if(data[j]<data[min]){


min=j;


}//if


}//for 2


if(min-i){


data[i]=data[i]^data[min];


data[min]=data[i]^data[min];


data[i]=data[i]^data[min];


}//if


}//for





}