双向冒泡排序

来源:互联网 发布:国外有类似淘宝吗 编辑:程序博客网 时间:2024/05/16 17:16
/* ============================================================================ Name        : Bubble.c Author      : AnPan Version     : Copyright   : Your copyright notice Description : Hello World in C, Ansi-style ============================================================================ */#include <stdio.h>#include <stdlib.h>void TwoBubble(int *Array,int n){    int boundmin = 0;    int boundmax = n;    int mmax,mmin,i;    int tmp;    while(boundmin < boundmax)    {        mmax = 0;        mmin = 0;        for(i = boundmin;i<boundmax;i++)/*此次扫描使重气泡下沉*/        {             if(*(Array+i) > *(Array+i+1))             {                 tmp = *(Array+i);                 *(Array+i) = *(Array+i+1);                 *(Array+i+1) = tmp;                 mmax = i;/*记录下沉最后一次交换的位置*/             }        }        if(mmax == 0)            break;        boundmax = mmax;        for(i = boundmax-1;i>boundmin;i--)/*此次扫描气泡上浮*/        {            if(*(Array+i) < *(Array+i-1))             {                 tmp = *(Array+i);                 *(Array+i) = *(Array+i-1);                 *(Array+i-1) = tmp;                 mmin = i;/*记录上浮最后一次交换的位置*/             }        }        if(mmin == 0)            break;        boundmin = mmin;    }}int main(void){    int Array[9] = {36,80,15,26,33,2,96,46,83};    TwoBubble(Array,9);    int i;    for(i = 0;i<9;i++)    {        printf("%d ",*(Array+i));    }    printf("\n");    return 0;}