起泡排序
来源:互联网 发布:excel表格不能合计数据 编辑:程序博客网 时间:2024/04/27 00:54
#include <stdio.h> #include <stdlib.h> #include <time.h> void swap(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;}void sort(int *a,int n) { int bc=0;//比较次数int jc=0;//交换次数int i,j,temp; int flag=0;for(i=0;i <n-1;i++) { flag=0;for(j=2;j<=n-i;j++) { if(a[j]<a[j-1]) { swap(&a[j],&a[j-1]);jc++; flag=1; } bc++; } if(!flag) //如果没有交换,则说明排序完成break;} printf( "比较次数d\n ",bc); printf( "交换次数d\n ",jc); } int main() { int a[21],i; for(i=1;i<=20;i++) { a[i]=50-i; printf( "%d\t ",a[i]);} sort(a,20); printf( "排序后\n"); for(i=1;i <=20;i++) { printf( "%d\t ",a[i]); } return 1;}