zoukankan      html  css  js  c++  java
  • 剑指offer 调整数组顺序使奇数位于偶数前面

    题目描述

    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
     
     
    思路:
    1)空间换时间, 空间复杂度O(n), 时间复杂度O(n)
     1 class Solution {
     2 public:
     3     void reOrderArray(vector<int> &array) {
     4         int len = array.size();
     5         vector<int> v1, v2;
     6         v1.clear();
     7         v2.clear();
     8         for (int i = 0; i < len; i++) {
     9             if (array[i] & 1 != 0) {
    10                 v1.push_back(array[i]);
    11             } else {
    12                 v2.push_back(array[i]);
    13             }
    14         }
    15         int index = 0;
    16         for (int i = 0; i < v1.size(); i++) {
    17             array[index++] = v1[i];
    18         }
    19         for (int i = 0; i < v2.size(); i++) {
    20             array[index++] = v2[i];
    21         }
    22     } 
    23 };

    2)插入排序,时间复杂度O(n^2), 空间复杂度O(n)

     1 class Solution {
     2 public:
     3     void reOrderArray(vector<int> &array) {
     4         int k = 0;
     5         int len = array.size();
     6         for (int i = 0; i < len; i++) {
     7             if (array[i] & 1 != 0) {
     8                 int temp = array[i];
     9                 int j = i;
    10                 while (j > k) {
    11                     array[j] = array[j - 1];
    12                     j--;
    13                 }
    14                 array[k++] = temp;
    15             }
    16         }
    17     }
    18 };

    3)归并排序

  • 相关阅读:
    Java——数组
    Java——控制循环结构
    脏检查
    Session跟SessionFactory的线程安全与非安全
    脏检查and刷新机构
    oracle函数
    多线程下单列模式
    多线程
    线程同步
    文件上传功能的实现
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/11265573.html
Copyright © 2011-2022 走看看