1.算法原理 


2.代码实现

#include <stdio.h>

//printArray打印出数组
void printArray(int a[],int size){  
    printf("数组为:[%d] ",a[0]);  
    for (int i=1;i<size;i++)  
    {  
        printf(" %x ",a[i]);  
    }  
    printf("\n");  
}


void main()
{
   //a[0]监视哨
   int  a[10] ={0,9,8,7,6,5,4,3,2,1};
   int  len=10;
   int low=1, up=len-1, index=1;
    while (up > low)
    {
        for (int i = low; i < up; i++)
        {
            if (a[i] > a[i + 1])
            {
				printf(" %d<-->%d ",a[i],a[i+1]);
				printArray(a,10);
				a[0]=a[i];
				a[i]=a[i+1];
				a[i+1]=a[0];
                index = i;
            }
        }
        up = index;
        for (int j = up; j > low; j--)
        {
            if (a[j] < a[j - 1])
            {
				printf(" %d<-->%d ",a[j],a[j-1]);
				printArray(a,10);
                a[0]=a[j];
				a[j]=a[j-1];
				a[j-1]=a[0];
                index = j;
            }
        }
        low = index;
    }
	printArray(a,10);

}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.




3.结果

9<-->8 数组为:[0]  9  8  7  6  5  4  3  2  1
 9<-->7 数组为:[9]  8  9  7  6  5  4  3  2  1
 9<-->6 数组为:[9]  8  7  9  6  5  4  3  2  1
 9<-->5 数组为:[9]  8  7  6  9  5  4  3  2  1
 9<-->4 数组为:[9]  8  7  6  5  9  4  3  2  1
 9<-->3 数组为:[9]  8  7  6  5  4  9  3  2  1
 9<-->2 数组为:[9]  8  7  6  5  4  3  9  2  1
 9<-->1 数组为:[9]  8  7  6  5  4  3  2  9  1
 1<-->2 数组为:[9]  8  7  6  5  4  3  2  1  9
 1<-->3 数组为:[1]  8  7  6  5  4  3  1  2  9
 1<-->4 数组为:[1]  8  7  6  5  4  1  3  2  9
 1<-->5 数组为:[1]  8  7  6  5  1  4  3  2  9
 1<-->6 数组为:[1]  8  7  6  1  5  4  3  2  9
 1<-->7 数组为:[1]  8  7  1  6  5  4  3  2  9
 1<-->8 数组为:[1]  8  1  7  6  5  4  3  2  9
 8<-->7 数组为:[1]  1  8  7  6  5  4  3  2  9
 8<-->6 数组为:[8]  1  7  8  6  5  4  3  2  9
 8<-->5 数组为:[8]  1  7  6  8  5  4  3  2  9
 8<-->4 数组为:[8]  1  7  6  5  8  4  3  2  9
 8<-->3 数组为:[8]  1  7  6  5  4  8  3  2  9
 8<-->2 数组为:[8]  1  7  6  5  4  3  8  2  9
 2<-->3 数组为:[8]  1  7  6  5  4  3  2  8  9
 2<-->4 数组为:[2]  1  7  6  5  4  2  3  8  9
 2<-->5 数组为:[2]  1  7  6  5  2  4  3  8  9
 2<-->6 数组为:[2]  1  7  6  2  5  4  3  8  9
 2<-->7 数组为:[2]  1  7  2  6  5  4  3  8  9
 7<-->6 数组为:[2]  1  2  7  6  5  4  3  8  9
 7<-->5 数组为:[7]  1  2  6  7  5  4  3  8  9
 7<-->4 数组为:[7]  1  2  6  5  7  4  3  8  9
 7<-->3 数组为:[7]  1  2  6  5  4  7  3  8  9
 3<-->4 数组为:[7]  1  2  6  5  4  3  7  8  9
 3<-->5 数组为:[3]  1  2  6  5  3  4  7  8  9
 3<-->6 数组为:[3]  1  2  6  3  5  4  7  8  9
 6<-->5 数组为:[3]  1  2  3  6  5  4  7  8  9
 6<-->4 数组为:[6]  1  2  3  5  6  4  7  8  9
 4<-->5 数组为:[6]  1  2  3  5  4  6  7  8  9
数组为:[4]  1  2  3  4  5  6  7  8  9
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.