这是完全自主编码,哈哈。但是思想还是书上先有的,但是没有具体代码。下面是运行结果截图,输入的为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 为真则继续。
在之前的“静态表查找”代码中加入如下函数,实现双向排序功能。