首页 > 编程知识 正文

c语言三种排序方法,c语言冒泡排序法代码

时间:2023-05-06 13:36:21 阅读:55616 作者:2080

程序员经常需要处理数组中存储的大量数据,如排序和搜索。排序是一个按特定顺序(例如升序或降序)对一系列无序数据进行排序的过程。 对数据进行排序是最重要的APP应用程序之一。 实际生活中的很多问题都需要对数据进行排序。 上次介绍了根据交换法的排序,这次介绍的是将交换法改良后的排序法。选择法排序

交换法排序中,请参阅第i轮(i=0,1,2,…,n-2)比较中,前面的i个数是已经排好序的,由于第i+1个数和后面余下的所有数都要进行一次比较,每进行一次比较,若后面的数大就交换位置,这样每一轮比较中最多需要n-1-i次两数交换操作。

从算法的名称和原理可以看出,这样实际上整个算法需要的交换次数很多,算法排序效率很低。 在此基础上能做一定的改进,使之更有效率吗?

实际上,找到剩下的数中的最大值后可以与第i 1个数交换位置。 这样,一轮比较最多只有一次两数交换操作,整个算法最多有n-1次的两数交换操作,与交换法排序的n-1-i次操作相比,简化了很多要按选择法排序选择顺序降序对这种改进的排序算法进行排序,请执行以下操作:

第一次,找到3358www.Sina.com/中的最大值88,交换前几个84,为84 83 88 87 61

第二次,从剩下的四个数中找出最大值87,交换为第二个数83,http://www.Sina.com /;

从第三次开始,剩下的三个和88 83 84 87 61按降序排列,因此最终结果为88 8784 8361

以下是该算法的代码实现。

int array[n]={.}//假设n是常数int i,j,k,temp; for(I=0; i n-1; I ) ) k=I; for(j=I1; j n; j () if ) array[j]array[k] ) k=j; //记录最大数下标的位置}if(k!=i () { temp=array[k]; array[k]=array[i]; array[i]=temp; }相应地,要实现升序排序,只需将if语句的代码更改为84 83 61

选择法排序比交换法排序效率提高很多,但思考量比交换法大。 但其实世界万物都是如此,没有完美的。88 8784 8361,例如交换法排序的核心是比较后的,array[j] array[k],可以省去很多交换的步骤,提高程序的执行效率。 但是,其缺点是,选择法的排名比交换法的排名思考量多,以思考量作为交换效率化。

参考文献: mldxmf时尚鸡勤奋棒球ssdqz等编着zydse主审,c语言编程(第4版),高等教育出版社,P206-207。

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