双向冒泡排序
来源:互联网 发布:国外有类似淘宝吗 编辑:程序博客网 时间: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;}