这是完全自主编码,哈哈。但是思想还是书上先有的,但是没有具体代码。下面是运行结果截图,输入的为23 ,45,2,15,9
冒牌排序流程如下,一次正向冒泡,从左至右。然后一次反向冒泡,从右至左。
第一次把最大的记录放到表尾,第二次将最小记录放到表头,如此反复。
pos[0]记录无序序列的第一个位置0,pos[1]记录无序表的最后一个位置len-1;
步长为d,正向冒泡为1,反响冒泡为-1.合并两方向为:
for(int i=pos[(1-d)/2];i!=pos[(1+d)/2];i=i+d).
changeFlag 用来标志是否有交换,如果没有交换则终止循环。
如果有交换,则将最后一次交换的位置赋给change。
在一次循环冒泡结束后将步长取反,如果changeFlag 为真则继续。
在之前的“静态表查找”代码中加入如下函数,实现双向排序功能。
全部代码为:

本文介绍了双向冒泡排序的详细实现过程,包括正向冒泡和反向冒泡的步骤,以及如何判断是否需要交换元素。通过示例展示了算法在输入数组23, 45, 2, 15, 9上的执行情况。提供的C++代码实现了该排序算法,并包含了一个静态查找表类`SSearch`,提供了多种查找和排序方法。"
135010766,9236018,西安道通科技面试经验分享,"['面试技巧', 'Linux', '嵌入式开发']


385

被折叠的 条评论
为什么被折叠?



