#include<stdio.h>
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
int sort(int A[],int n)
{
bool flag1,flag2=true;
while(1)
{
flag1=false;
for(int i=1;i<n-1;i+=2)
if(A[i]>A[i+1])
{
flag1=true;
swap(&A[i],&A[i+1]);
}
if(!flag1&&!flag2)
break;
flag2=false;
for(int i=0;i<n-1;i+=2)
if(A[i]>A[i+1])
{
flag2=true;
swap(&A[i],&A[i+1]);
}
if(!flag1&&!flag2)
break;
}
}
int main()
{
int A[10]={2,6,21,5,3,12,33,45,61,8};
sort(A,10);
for(int i=0;i<10;i++)
printf("%d ",A[i]);
}
时间复杂度
平均情况下:O(nlog2n)
最坏情况下:O(nlog2n)
最好情况下:O(n)
空间复杂度:O(1)
稳定性:稳定
本文深入探讨了一种交替排序算法,该算法通过两步比较和交换实现数组元素的排序,详细展示了其工作原理,并通过C语言代码实现了算法逻辑。文章分析了算法的时间复杂度和空间复杂度,指出其在平均和最坏情况下的时间复杂度为O(nlog2n),最好情况下为O(n),空间复杂度为O(1),并强调了算法的稳定性。
1380

被折叠的 条评论
为什么被折叠?



