摘要: 【题 目】输入一个整型的数组,调整数组的数字,使得所有的奇数位于数组的前半部分,所有的偶数都位于数组的后半部分。要求时间复杂度为O(n)。 【思 路1】首先我们不考虑时间复杂度的要求,直观考虑:我们只需要从头到尾扫描整个数组,如果碰到奇数,放到第一的位置;如果碰到偶数,就放到最后的位置。这样就OK了。然后我们来分析这种算法的效率问题:首先我们需要一个临时变量来保存需要移动的元素,因而空间复杂度为O(1).时间上,对于第i个元素,它是奇数和偶数的概率各为1/2,因而它有1/2的概率向前移动(i-1)个位置,有1/2的概率想后移动(n-i)个位置,因而平均下来要移动(n-1)/2的位置,也就... 阅读全文
posted @ 2011-12-11 21:09 python27 阅读(1814) 评论(0) 推荐(2)