-
问题描述
编写双向冒泡排序算法,在正反两个方向交替进行扫描,即第一趟把关键字最大的元素放在最后面,第二趟把关键字最小的元素放在序列最前面,如此反复下去。
-
算法思想
在原有的冒泡排序的基础上进行改造
改造处:① 外部循环条件,因为待排序序列经过一轮排序后,下一次排序的起始点与结束点都会发生变化,因此不直接填入递增或递减语句
for(i=0,j=L.length-1;i<j;)
② 内部循环条件
for(k=i+1;k<=j;k++)
//最大元素推至最后(j指向的位置为终点位置)
for(l=j-1;l>=i;--l)
//最小元素推至最前
- 完整测试代码
#include<stdio.h>
int main(){
int a[7]={
111,112,6,15,3,118