【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】
题目:
输入一个整数数组,实现一个函数调整数组的元素顺序,使得奇数位于偶数的前半部分,偶数位于数组的后半部分。时间复杂度O(n)
题目分析:
类似题目:输入一个字符串,实现一个函数,使得大写字符在前半部分,小写字母在后半部分。
(1)没有要求调整后,位置不可以变化
(2)时间复杂度智能遍历一次
算法实现:
#include <stdio.h>
void sort_array(int *array, int size)
{
int *start = array;
int *end = &array[size-1];
int temp = 0;
while(start < end)
{
if(*start%2 != 0)
{
start++;
continue;
}
if(*end%2 == 0)
{
end--;
continue;
}
temp = *start;
*start = *end;
*end = temp;
}
}
void print(int *array, int size)
{
int i=0;
for(;i <size; i++)
printf(" %d", array[i]);
printf("\n");
}
int main()
{
int array[] = {38, 1,2,4,6,7, 9,11, 12,38};
//int in[]={9, 4, 3, 2,100, 99, 88, 77, 66, 6, 5, 4, 8, 3, 2};
int size = sizeof(array)/sizeof(int);
sort_array(array, size);
print(array, size);
return 0;
}