您的位置:首页 > 理论基础 > 数据结构算法

数据结构——算法之(026)( 调整数组顺序使奇数位于偶数前面)

2014-06-04 16:00 459 查看
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: