zoukankan      html  css  js  c++  java
  • 面试题14:调整数组顺序使奇数位于偶数前面

    题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,是的所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。

    初级程序员代码:

     1 void reorderOddEven(vector<int>&data)
     2 {
     3     unsigned int n = data.size();
     4     int i = 0;
     5     int j = n-1;
     6     while (i < j)
     7     {
     8         while (i < j && (data[j]&1==0))
     9             --j;
    10         while (i < j && (data[i]&1==1))
    11             ++i;
    12         if (i < j)
    13         {
    14             data[i]^=data[j];
    15             data[j]^=data[i];
    16             data[i]^=data[j];
    17         }
    18     }
    19 }

    可扩展性解法(将判断标准变成一个函数指针):

     1 bool isEven(int n)
     2 {//如果n为偶数则返回true
     3     return (n&1)==0;
     4 }
     5 void reorderOddEven(vector<int>&data, bool (*fun)(int))
     6 {
     7     unsigned int n = data.size();
     8     int i = 0;
     9     int j = n-1;
    10     while (i < j)
    11     {
    12         while (i < j && fun(data[j]))
    13             --j;
    14         while (i < j && !fun(data[i]))
    15             ++i;
    16         if (i < j)
    17         {
    18             data[i]^=data[j];
    19             data[j]^=data[i];
    20             data[i]^=data[j];
    21         }
    22     }
    23 }
    24 //调用函数
    25 reorderOddEven(data, isEven);
  • 相关阅读:
    本地存储 localStorage
    正则对象
    面向对象
    事件
    日期对象
    网易适配与淘宝适配
    自动把网页px单位转换成rem
    湖南省web应用软件(中慧杯)
    百度图片审核功能
    百度ai语音识别
  • 原文地址:https://www.cnblogs.com/happygirl-zjj/p/4613841.html
Copyright © 2011-2022 走看看