主题:分享个排序算法...........
#include<stdio.h>
#include<stdlib.h>
#define n 18
void main()
{
bool bIEvennumber=false;//元素个数是否偶数
int A[n]={3,1,5,4,7,9,8,6,10,2,12,11,14,13,16,15,18,17};
int max,min,i,j,d,c;
printf("原数组为: ");
for(i=0;i<n;i++)
printf("%d ",A[i]);
printf("\n");
if(n%2==0)
bIEvennumber=true;
for(i=0;i<n/2;i++) //
{
max=min=A[i];
c=d=i;
for(j=i+1;j<n-i;j++)
{
if(A[j]>=max)
{
max=A[j];
c=j;
}
else if(A[j]<=min)
{
min=A[j];
d=j;
}
}
if(j-i<=2)
break;
//较小值放前面
A[d]=A[i];
A[i]=min;
//较大值放后面
if(c!=i)
{
A[c]=A[j-1];
A[j-1]=max;
}
else
{
max=A[j-1];
//此处max被用做中间变量不用担心影响到它本来的作用
A[j-1]=A[d];
A[d]=max;
}
}
if(bIEvennumber&&A[i]>A[i+1])
{
int temp;
temp=A[i+1];
A[i+1]=A[i];
A[i]=temp;
}
printf("调整后的数组为:");
for(i=0;i<n;i++)
printf("%d ",A[i]);
printf("\n ");
return;
}
#include<stdlib.h>
#define n 18
void main()
{
bool bIEvennumber=false;//元素个数是否偶数
int A[n]={3,1,5,4,7,9,8,6,10,2,12,11,14,13,16,15,18,17};
int max,min,i,j,d,c;
printf("原数组为: ");
for(i=0;i<n;i++)
printf("%d ",A[i]);
printf("\n");
if(n%2==0)
bIEvennumber=true;
for(i=0;i<n/2;i++) //
{
max=min=A[i];
c=d=i;
for(j=i+1;j<n-i;j++)
{
if(A[j]>=max)
{
max=A[j];
c=j;
}
else if(A[j]<=min)
{
min=A[j];
d=j;
}
}
if(j-i<=2)
break;
//较小值放前面
A[d]=A[i];
A[i]=min;
//较大值放后面
if(c!=i)
{
A[c]=A[j-1];
A[j-1]=max;
}
else
{
max=A[j-1];
//此处max被用做中间变量不用担心影响到它本来的作用
A[j-1]=A[d];
A[d]=max;
}
}
if(bIEvennumber&&A[i]>A[i+1])
{
int temp;
temp=A[i+1];
A[i+1]=A[i];
A[i]=temp;
}
printf("调整后的数组为:");
for(i=0;i<n;i++)
printf("%d ",A[i]);
printf("\n ");
return;
}