整体思路:从头查找,只要查找到奇数,就和第一个非奇数交换位置,因为只有一个 for 循环 , 所以时间复杂度为1;
我觉得跟冒泡排序法有点相似
p75-6
#include<stdio.h>
#include<stdlib.h>
#define N 8
int a[N]={1,13,3,4,5,6,7,8};
void output(int *a,int n)
{
printf("%d\n",n);
int i=0;
for( i=0;i<n;i++)
{
printf("%d",*(a+i));//a[i]
}
}
void del(int *a)
{
int i,j,k;
j=k=0;
for(i=0;i<N;i++)
if(a[i]%2==1)
{
k=a[i];
a[i]=a[j];
a[j]=k;
j++;
}
}
int main()
{ int n;
n=N;
output(a,n);
del(a);
output(a,n);
}