/* 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]){ t=data[j]; 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 }