1、冒泡排序算法详解单向冒泡排序算法1、从上向下冒泡的冒泡排序的基本思想是:(1)首先将第一个记录的关键字和第二个记录的关键字进行比较,若为“逆序” (即 L.r1.keyL.r2.key) ,则将两个记录交换之,然后比较第二个记录和第三个记录的关键字。依次类推,直至第 n-1 个记录的关键字和第 n 个记录的关键字比较过为止。这是第一趟冒泡排序,其结果是使得关键字最大的记录被安置到最后一个记录的位置上;(2)然后进行第二趟冒泡排序,对前面的 n-1 个记录进行同样的操作,其结果是使关键字次大的记录被安置到第 n-1 个记录的位置;一般地,第 i 趟冒泡排序是从 L.r1到 L.rn-i+1依次比
2、较相邻两个记录的关键字,并在“逆序”时交换相邻记录,其结果是这 n-i+1 个记录中关键字最大的记录被交换到第 n-i+1 的位置上。整个排序过程需要进行 K(1krj+1)flag=1;temp=rj;rj=rj+1;rj+1=temp;i+;2、从下向上冒泡的冒泡排序的基本思想是:(1)首先将第 n-1 个记录的关键字和第 n 个记录的关键字进行比较,若为“逆序” (即 L.rn.key=i+1;j-)if(rjL.r2.key) ,则将两个记录交换之,然后比较第二个记录和第三个记录的关键字。依次类推,直至第 n-1 个记录的关键字和第 n 个记录的关键字比较过为止。这是第一趟冒泡排序,其结果是使得关键字最大的记录被安置到最后一个记录的位置上;2、然后进行第二趟冒泡排序,将第 n-2 个记录的关键字和第 n-1 个记录的关键字进行比较,若为“逆序” (即 L.rn-1.keyrj+1)temp=rj;rj=rj+1;rj+1=temp;flag =1;high-; /*修改上界 */for(j=high;jlow;j-) /*从下向上冒泡*/if(rj0) /*注意这个交换条件*/temp=rj;rj=rj+d;rj+d=temp;flag=1;b1+d-=d; /*修改边界*/d*=-1; /*换个方向*/*while*/*bibubble4*/