首页 > 编程知识 正文

c语言选择排序和冒泡排序的区别,c语言实现冒泡排序算法

时间:2023-05-04 03:30:26 阅读:140660 作者:4793

在自学计算机网络的时候,我看到了哈佛案例研究的精髓照片,觉得说得很好。 顺便说一下,我考虑了一下学习中的c语言。 被动的学习都做好了。 看看课,看看书,理解之后再做笔记。 虽然也进行了一部分自主性的学习,但是只进行了实战演习,没有教别人。 结合我在C语言学习过程中遇到的各种麻烦,写了一篇C语言排序的文章,我自己说了,帮助了不懂的朋友理解,顺便得到了反馈帮助了我自己

c语言的排序方法有很多种,但目前只学到了选择法和冒泡法。 这两种排序主要考察for循环的嵌套循环和数组,其中也包括交换算法。 正文顺序为交换算法、选择法排序、冒泡法排序

算法交换算法是一种非常常见的算法,必须要清楚。 其实理解也很简单,但还是要冷静地理解。 不然会像我一样。 当时理解了,但不记得了

算法内容

为了简化文章,我只写了主要部分

intmain(void ) {int a=12; int b=24; int temp; //中间变量temp=a; a=b; b=temp; 返回0; } 算法理解

该算法是交换变量a的值和变量b的值。 除了两个变量外,还定义一个中间变量,首先将变量a的值代入temp。 此时,可以将变量temp视为等于变量a。 然后,将变量b的值指派给变量a。 这样,变量a中就包含了变量b的值。 然后,如果将变量temp的值,即变量a的值代入变量b,则变量b将包含上一个变量a的值,完成数值的交换。

选择方法排序选择方法排序也很简单,但必须使用for嵌套循环和条件语句

算法内容

#includestdio.hintmain(void ) ) { int i,j; //定义循环变量int temp中间变量inta [ 10 ]={ 1,34,53,2,46,276,346,341,64,24 }; /*交换算法*/for(I=0; i10; I ) for(j=I1; j10; j () if ) a[I]a[j] ) { temp=a[i]; a[i]=a[j]; a[j]=temp; }//*排序打印*/printf (最后一次排序为) ); for(I=0; i10; I ) {printf('%d ',a[i] ); } return 0; } 算法理解

让我们从交换算法开始:

首先进入外环,i=0,然后进入内环,j=1,然后比较a[0]和a[1]。 a[0]a[1]时,用交换算法进行数值交换,相反,比较a[0]和a[2],第一次比较结束后返回外环。 此时i=i 1,I为1。数组的要素按顺序进行了选择排序。 从a[0]开始按顺序与后面的要素进行比较。 第一次在a[0]以后筛选最小的东西并分配值给a[0],第二次在a[1]以后筛选最小的东西并分配值。 依次类推,内层环的j=i 1是为了将a[i]与自身进行比较,避免浪费时间。 总之,选择分类法分别在每次内循环结束时,将最小值赋予相应的a[i]

运行图

鼓泡对齐法算法内容

#includestdio.hintmain(void ) inta [ 10 ]={ 1,23,45,3,443,4432,34,232,4444,432 }; int i,j,temp; for(I=0; i9; I ) for(j=0; j9-i; j () if ) a[j]a[j1] ) {temp=a[j]; a[j]=a[j 1]; a[j 1]=temp; }}}printf ('排序结果:'); for(I=0; i10; I ) {printf('%d ',a[i] ); }return 0; } 算法理解

让我们从交换算法开始:

首先进入外循环,i=0,然后进入内循环,j=0,然后比较a[0]和a[1],如果有a[0]a[1],则交换数值,如果没有,则进行下一个内循环,计算a[1]和a[1] 不管怎么说,冒泡法的排序就像拍打鼹鼠一样,以第一次最大的鼹鼠为最后,第二次最大的鼹鼠为最后依次进行。

咳嗽、认真、冒泡排序是将相邻两个因素进行比较,如果前一个值大于后一个值,则交换数值。 否则进行两个以下要素的比较。 转一次就找到这一次的最大值,转10次就全部出来。 另外,内环的弹出条件是j10-i。 最初的理由是没有a[10]和a[11]的比较。 另外,因为在上次的循环中比较了相对较大的东西。 去比较后面排的东西会浪费时间。 写下来也没错,但是…

说明外循环的作用,外循环的作用是使泡沫能产生10次,也是控制内循环的飞出条件

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。