#include <stdio.h> #include <stdlib.h> #include <time.h> #define MAXSIZE 100 #define TRUE 1 #define FALSE 0 typedef int elemtype; void BubbleSort(elemtype *,int); void swap(elemtype *,elemtype *); void main(){ elemtype buffer[MAXSIZE]; int i; srand(time(NULL)); for(i=0;i<MAXSIZE;i++) buffer[i]=(rand()%(MAXSIZE*10)); 生成随机数,并对其排序 BubbleSort(buffer,MAXSIZE); for(i=0;i<MAXSIZE;i++) printf("%d ",buffer[i]); } void BubbleSort(elemtype buffer[],int length){ //改进的双向冒泡排序 int path=1; //冒泡方向 int ends[3]; int sorted; int i; ends[0]=0; ends[2]=length-1; sorted=FALSE; while(!sorted&&ends[0]<ends[2]){ sorted=TRUE; for(i=ends[1-path];i!=ends[1+path];i+=path){ if((buffer[i]-buffer[i+path])*path>0){ //交换 swap(&buffer[i],&buffer[i+path]); sorted=FALSE; }//if }//for ends[1+path]-=path; path=-path; }//while } void swap(elemtype *left,elemtype *right){ elemtype tmp; tmp=*left; *left=*right; *right=tmp; } 太好的算法了,太好的思想……佩服啊,我就没有想出来……