动画演示(冒泡法)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

范俊冒泡排序法(升序)设计算法思路:1.如果对包含有n个数的数组a[n]实行冒泡排序,则需要n-1轮比较;2.第1轮比较时,从数组元素a[0]开始,依次比较a[0]和a[1],a[1]和a[2],a[2]和a[3],…….,a[n-2]和a[n-1],并将大数后移,比较的结果是将数组最大数存入数组尾元素a[n-1]中;3.第2轮比较时,同样从数组元素a[0]开始,依次比较a[0]和a[1],a[1]和a[2],a[2]和a[3],…….,a[n-3]和a[n-2],并将大数后移,比较的结果是数组剩余元素的最大数存入元素a[n-2]中;4.依此类推,第n-1轮比较时,比较a[0]和a[1],将大数后移,存入元素a[1]中。排序完毕,数组元素按照升序排列。说明:大数后移是指将每一对参与比较的元素的较大值存入后面的元素,较小值存入前面的元素。变量与变量的值下一步冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}printf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}注意:该PPT采用单步运行的方式演示了冒泡排序法的实现过程,并实时显示各变量的值。变量与变量的值下一步冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;23957s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5nijprintf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}定义变量,赋初值变量与变量的值下一步i=0时,表示数组元素的第一轮比较,该轮比较会将参与比较的两个数的较大数后移,比较的最终结果是数组中最大数移到最后。冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;23957s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5n0ijprintf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}变量与变量的值下一步j=0时,比较变量s[0]和s[1]中值的大小,将较大数存入s[1]冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;23957s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5n0i0j值为4printf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}变量与变量的值下一步冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;32957s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5n0i0j值为4printf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}j=0时,比较变量s[0]和s[1]中值的大小,将较大数存入s[1]变量与变量的值下一步冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;32957s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5n0i1j值为4printf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}j=1时,比较变量s[1]和s[2]中值的大小,将较大数存入s[2]变量与变量的值下一步冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;32957s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5n0i1j值为4printf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}j=1时,比较变量s[1]和s[2]中值的大小,将较大数存入s[2]变量与变量的值下一步冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;92357s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5n0i1j值为4printf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}j=1时,比较变量s[1]和s[2]中值的大小,将较大数存入s[2]变量与变量的值下一步冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;92357s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5n0i2j值为4printf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}j=2时,比较变量s[2]和s[3]中值的大小,将较大数存入s[3]变量与变量的值下一步冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;92357s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5n0i2j值为4printf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}j=2时,比较变量s[2]和s[3]中值的大小,将较大数存入s[3]变量与变量的值下一步冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;92357s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5n0i2j值为4printf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}j=2时,比较变量s[2]和s[3]中值的大小,将较大数存入s[3]变量与变量的值下一步冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;72359s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5n0i3j值为4printf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}j=3时,比较变量s[3]和s[4]中值的大小,将较大数存入s[4]变量与变量的值下一步冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;72359s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5n0i3j值为4printf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}j=3时,比较变量s[3]和s[4]中值的大小,将较大数存入s[4]变量与变量的值下一步冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;72359s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5n0i3j值为4printf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}j=3时,比较变量s[3]和s[4]中值的大小,将较大数存入s[4]变量与变量的值下一步冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;72395s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5n0i4j值为4printf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}j=4时,44为假,循环结束,该轮比较结束,数组最大数存入s[4]元素最大值存入s[4]变量与变量的值下一步i的值为1,开始第二轮比较,因s[4]已经存放的是数组最大数,故不参与比较,该轮比较只对s[0]~s[3]的相邻元素比较大小,并将较大数后移冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;72395s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j]s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;}5n1i4j值为4printf(“%d%d%d%d%d\n”,s[0],s[1],s[2],s[3],s[4]);}变量与变量的值下一步j=0时,比较变量s[0]和s[1]中值的大小,将较大数存入s[1]冒泡法演示(升序)程序段:#includestdio.hmain(){ints[10]={2,9,3,7,5},n=5,i,j,t;72395s[0]s[1]s[2]s[3]s[4]for(i=0;in-1;i++)for(j=0;jn-1-i

1 / 40
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功