奇偶排序(OddEven Sort)----(排序算法十一)
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);
}
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
浙公网安备 33010602011771号