分享

奇偶排序问题

 andersr 2012-06-28
奇偶排序问题
2008-03-13 8:20
在工作笔试时经常会碰到这个问题:一个数组序列,一半为奇数,一半为偶数,重新排列使得所有奇数位于奇数下标上,所有偶数位于偶数下标上。
   这个问题在了解了快速排序算法后很容易得出答案,其实就是快速排序算法得前半部分。用两个变量even_i,odd_i分别遍历数组中下标为偶数和奇数得数,当Array[even_i]为奇数并且Array[odd_i]为偶数时就交换。代码如下;
void sort(int Array[])
{
    int even_i=0;
    int odd_i=0;
    while(odd_i<n&&even_i<n)
    {
       while(odd_i<n&&a[odd_i]%2==1)
             odd_i+=2;
       while(even_i<n&&a[even_i]%2==0)
             even_i+=2;
       if(odd_i<n&&even_i<n)
       {
             swap(a[odd_i],a[even_i]);
             odd_i+=2;
             even_i+=2;
        }

    }
}
    在vc6.0调试成功。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多