冒泡排序法(稳定的排序算法)
源代码: #include<stdio.h> void Swap(int a[],int i,int j){ int temp; temp=a[i]; a[i]=a[j]; a[j]=temp; } void Print(int a[],int n){ int i; for(i=0;i<n;i++){ printf("%4d",a[i]); } printf("\n"); } void BubbleSort(int a[],int n){ int i,j; for(i=0;i<n-1;i++){ for(j=0;j<n-i-1;j++){ if(a[j]>a[j+1]){ Swap(a,j,j+1); cnt++; } } Print(a,n); } } int main(void){ int i,n; int a[100]; printf("Please input data number:"); scanf("%d",&n); printf("Please input data:"); for(i=0;i<n;i++){ scanf("%d",a+i); } BubbleSort(a,n); return 0; } 改进代码: void BubbleSort(int a[],int n){ int i,j,cnt=1; for(i=0;cnt;i++){ cnt=0; for(j=0;j<n-i-1;j++){ if(a[j]>a[j+1]){ Swap(a,j,j+1); cnt++; } } Print(a,n); }
}
二元冒泡排序法:(high从0开始记录最大值,low从n-1开始记录最小值) 源代码: #include<stdio.h> void Swap(int a[],int i,int j){ int temp; temp=a[i]; a[i]=a[j]; a[j]=temp; } void Print(int a[],int n){ int i; for(i=0;i<n;i++){ printf("%4d",a[i]); } printf("\n"); } void BubbleSort(int a[],int n){ int i,high,low,cnt=1; for(i=0;cnt;i++){ cnt=0; for(high=i,low=n-i-1;low>i&&high<n-i-1;high++,low--){ if(a[high]>a[high+1]){ Swap(a,high,high+1); cnt++; } if(a[low]<a[low-1]){ Swap(a,low,low-1); cnt++; } } Print(a,n); } } int main(void){ int i,n; int a[100]; printf("Please input data number:"); scanf("%d",&n); printf("Please input data:"); for(i=0;i<n;i++){ scanf("%d",a+i); } BubbleSort(a,n); return 0; } |
八大排序算法冒泡排序法
最新推荐文章于 2021-12-16 20:21:21 发布