//冒泡排序#include<stdio.h>#define MAXSIZE 1024typedefstruct{int key;//关键字项char data;//其他数据项 }RecordType;//记录类型voidBubbleSort(RecordType R[],int n){//对R[1]~R[n]这n个记录进行冒泡排序int i,j,swap;for(i=1;i<n;i++)//进行n-1趟排序 {
swap=0;//设置未发生交换标志 for(j=1;j<=n-i;j++){if(R[j].key>R[j+1].key){//如果R[j].key大于R[j+1].key则交换R[j]和R[j+1]
R[0]=R[j];
R[j]=R[j+1];
R[j+1]=R[0];
swap=1;//有交换 }}if(swap==0)break;//本趟比较中未出现交换则结束排序 }}intmain(){int i=1,j,x;
RecordType R[MAXSIZE];printf("Input data of list(-1 stop):\n");scanf("%d",&x);while(x!=-1){
R[i].key=x;scanf("%d",&x);
i++;}printf("Output data in list:\n");//输出表中各记录的关键字for(j=1;j<i;j++)printf("%4d",R[j].key);BubbleSort(R,i-1);printf("\nOutput data in list after Sort:\n");//输出冒泡排序后的结果for(j=1;j<i;j++)printf("%4d",R[j].key);printf("\n");}