1.算法原理
2.代码实现
#include <stdio.h>
//printArray打印出数组
void printArray(int a[],int size){
printf("数组为:[%d] ",a[0]);
for (int i=1;i<size;i++)
{
printf(" %d ",a[i]);
}
printf("\n");
}
void main()
{
//a[0]监视哨
int a[10] ={0,9,8,7,6,5,4,3,2,1};
int len=10;
bool swapped = true;
while (swapped)
{
swapped = false;
for (int i=1; i<len-1; i=i+2)
{
if (a[i]>a[i+1])
{
printf("%d<-->%d ",a[i],a[i+1]);
printArray(a,len);
a[0]=a[i];
a[i]=a[i+1];
a[i+1]=a[0];
swapped = true;
}
}
for (int j=2; j<len-1; j=j+2)
{
if (a[j]>a[j+1])
{
printf("%d<-->%d ",a[j],a[j+1]);
printArray(a,len);
a[0]=a[j];
a[j]=a[j+1];
a[j+1]=a[0];
swapped = true;
}
}
}
printArray(a,len);
}
- 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.
3.结果
9<-->8 数组为:[0] 9 8 7 6 5 4 3 2 1
7<-->6 数组为:[9] 8 9 7 6 5 4 3 2 1
5<-->4 数组为:[7] 8 9 6 7 5 4 3 2 1
3<-->2 数组为:[5] 8 9 6 7 4 5 3 2 1
9<-->6 数组为:[3] 8 9 6 7 4 5 2 3 1
7<-->4 数组为:[9] 8 6 9 7 4 5 2 3 1
5<-->2 数组为:[7] 8 6 9 4 7 5 2 3 1
3<-->1 数组为:[5] 8 6 9 4 7 2 5 3 1
8<-->6 数组为:[3] 8 6 9 4 7 2 5 1 3
9<-->4 数组为:[8] 6 8 9 4 7 2 5 1 3
7<-->2 数组为:[9] 6 8 4 9 7 2 5 1 3
5<-->1 数组为:[7] 6 8 4 9 2 7 5 1 3
8<-->4 数组为:[5] 6 8 4 9 2 7 1 5 3
9<-->2 数组为:[8] 6 4 8 9 2 7 1 5 3
7<-->1 数组为:[9] 6 4 8 2 9 7 1 5 3
5<-->3 数组为:[7] 6 4 8 2 9 1 7 5 3
6<-->4 数组为:[5] 6 4 8 2 9 1 7 3 5
8<-->2 数组为:[6] 4 6 8 2 9 1 7 3 5
9<-->1 数组为:[8] 4 6 2 8 9 1 7 3 5
7<-->3 数组为:[9] 4 6 2 8 1 9 7 3 5
6<-->2 数组为:[7] 4 6 2 8 1 9 3 7 5
8<-->1 数组为:[6] 4 2 6 8 1 9 3 7 5
9<-->3 数组为:[8] 4 2 6 1 8 9 3 7 5
7<-->5 数组为:[9] 4 2 6 1 8 3 9 7 5
4<-->2 数组为:[7] 4 2 6 1 8 3 9 5 7
6<-->1 数组为:[4] 2 4 6 1 8 3 9 5 7
8<-->3 数组为:[6] 2 4 1 6 8 3 9 5 7
9<-->5 数组为:[8] 2 4 1 6 3 8 9 5 7
4<-->1 数组为:[9] 2 4 1 6 3 8 5 9 7
6<-->3 数组为:[4] 2 1 4 6 3 8 5 9 7
8<-->5 数组为:[6] 2 1 4 3 6 8 5 9 7
9<-->7 数组为:[8] 2 1 4 3 6 5 8 9 7
2<-->1 数组为:[9] 2 1 4 3 6 5 8 7 9
4<-->3 数组为:[2] 1 2 4 3 6 5 8 7 9
6<-->5 数组为:[4] 1 2 3 4 6 5 8 7 9
8<-->7 数组为:[6] 1 2 3 4 5 6 8 7 9
数组为:[8] 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.