冒泡排序法的基本思想:(以升序为例)含有n个元素的数组原则上要进行n-1次排序。对于每一躺的排序,从第一个数开始,依次比较前一个数与后一个数的大小。如果前一个数比后一个数大,则进行交换。这样一轮过后,最大的数将会出现称为最末位的数组元素。第二轮则去掉最后一个数,对前n-1个数再按照上面的步骤找出最大数,该数将称为倒数第二的数组元素......n-1轮过后,就完成了排序。/*冒泡排序分析详解:原始数据:28,30,19,2,23第一趟:第一次:28,30,19,2,23第二次:28,19,30,2,23第三次:28,19,2,30,23第四次:28,19,2,23,30第二趟:第一次:19,28,2,23,30第二次:19,2,28,23,30第三次:19,2,23,28,30第三趟:第一次:2,19,23,28,30第二次:2,19,23,28,30第四趟:第一次:2,19,23,28,30*///n个元素比较n-1趟//每趟比较次数=数组元素个数-趟数代码实现://随机产生一组20个元素的数组取值范围为[20,40]inta[20]={0};printf("随机产生的一个包含20个元素的数组:\n");for(inti=0;i<20;i++){a[i]=arc4random()%(40-20+1)+20;//arc4random产生随机数printf("%d",a[i]);}for(inti=0;i<20-1;i++){//比较的趟数for(intj=0;j<20-1-i;j++){//每趟比较的次数if(a[j]>a[j+1]){inttemp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}printf("\n进行冒泡排序,产生一组从小到大顺序的数组:\n");for(inti=0;i<20;i++){printf("%d",a[i]);}