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

    设置两个指针,分别指向数组的头和尾,交换奇偶

    注意几点:

    while循环中一定要加上start < end,不然有出边界的可能

    判断奇偶可以用位运算效率更高   & 0x1

    我的代码:

     1 void ReorderOddEven_1(int *pData, unsigned int length)
     2 {
     3     if (pData == NULL || length <= 0)
     4         return;
     5     int start = 0;
     6     int end = length - 1;
     7     while (start < end)
     8     {
     9         while (start < end && pData[start] % 2 != 0)
    10             start++;
    11         while (start < end && pData[end] % 2 == 0)
    12             end--;
    13         if (start < end)
    14         {
    15             int temp = pData[start];
    16             pData[start] = pData[end];
    17             pData[end] = temp;
    18         }
    19     }
    20 }

     示例代码:

     1 void ReorderOddEven_1(int *pData, unsigned int length)
     2 {
     3     if(pData == NULL || length == 0)
     4         return;
     5 
     6     int *pBegin = pData;
     7     int *pEnd = pData + length - 1;
     8 
     9     while(pBegin < pEnd)
    10     {
    11         // 向后移动pBegin,直到它指向偶数
    12         while(pBegin < pEnd && (*pBegin & 0x1) != 0)
    13             pBegin ++;
    14 
    15         // 向前移动pEnd,直到它指向奇数
    16         while(pBegin < pEnd && (*pEnd & 0x1) == 0)
    17             pEnd --;
    18 
    19         if(pBegin < pEnd)
    20         {
    21             int temp = *pBegin;
    22             *pBegin = *pEnd;
    23             *pEnd = temp;
    24         }
    25     }
    26 }
  • 相关阅读:
    echarts数据可视化之简单使用范例,
    配置用户/系统环境变量的意义与方法
    关于百度echarts数据可视化js插件基本使用样例
    python 博客引用
    泛型
    Java 关键字
    java基本知识点5
    Java 序列化
    java知识点4
    前端知识点总结1
  • 原文地址:https://www.cnblogs.com/raichen/p/5642875.html
Copyright © 2011-2022 走看看