先从下向上从无序区冒出一个最小元素,再从上向下从无序区冒出一个最大的元素。
#include<stdio.h>
#define M 5
int main()
{
int a[M],i,j,l,r,tmp;
for(i=0;i<M;i++) scanf("%d",&a[i]);
l=0,r=M-1,j=M-1;
while(l!=r) {
while(j>l) {
if(a[j]<a[j-1]) {
tmp=a[j];
a[j]=a[j-1];
a[j-1]=tmp;
}
j--;
}
l=++j;
while(j<r) {
if(a[j]>a[j+1]) {
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
j++;
}
r=--j;
//for(i=0;i<M;i++) printf("%d ",a[i]);
//printf("\nl=%d r=%d\n\n",l,r);
}
for(i=0;i<M;i++) printf("%d ",a[i]);
return 0;
}
如果运气好也是错,那我倒愿意错上加错!
❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀
如果人生会有很长,愿你的荣耀永不散场