• 【数组】调整数组顺序使奇数位于偶数前面


    1. 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分。

     1 /**
     2  * 调整数组顺序使奇数位于偶数前面
     3  * 
     4  * @author
     5  *
     6  */
     7 public class Solution {
     8 
     9     public static void order(int[] array) {
    10 
    11         if (null == array || array.length == 0 || array.length == 1) {
    12             return;
    13         }
    14 
    15         int start = 0; // 从头开始向后移动的指针
    16         int end = array.length - 1; // 从尾开始向前移动的指针
    17 
    18         while (start < end) {
    19 
    20             // 满足前偶后奇进行交换
    21             if ((array[start] & 1) == 0 && ((array[end] & 1) == 1)) {
    22                 swap(array, start, end);
    23             }
    24 
    25             if ((array[start] & 1) == 1) {
    26                 start++;
    27             }
    28 
    29             if ((array[end] & 1) == 0) {
    30                 end--;
    31             }
    32 
    33         }
    34     }
    35 
    36     public static void swap(int[] array, int m, int n) {
    37         int temp;
    38         temp = array[m];
    39         array[m] = array[n];
    40         array[n] = temp;
    41     }
    42 
    43     public static void main(String[] argss) {
    44 
    45         int[] array = { 1, 2, 3, 4, 5, 6, 7 };
    46 
    47         System.out.println("调整前:");
    48         for (int i : array) {
    49             System.out.print(i + " ");
    50         }
    51 
    52         order(array);
    53 
    54         System.out.println("
    调整后:");
    55         for (int i : array) {
    56             System.out.print(i + " ");
    57         }
    58     }
    59 }
    调整前:
    1 2 3 4 5 6 7 
    调整后:
    1 7 3 5 4 6 2 

    2.输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

     1 import java.util.List;
     2 
     3 public class Solution
     4 {
     5     public void reOrderArray(int[] array)
     6     {
     7         if (array.length == 0)
     8         {
     9             return;
    10         }
    11         
    12         int temp = 0;
    13         boolean flag;
    14         
    15         //类似插入排序,每次将奇数插入到所有偶数的前面
    16         for (int i = 0; i < array.length; i++)
    17         {
    18             flag = true;
    19             if ((array[i] & 1) == 1)
    20             {
    21                 for (int j = i; flag && j>0; j--)
    22                 {
    23                     if ((array[j - 1] & 1) == 0)
    24                     {
    25                         temp = array[j];
    26                         array[j] = array[j - 1];
    27                         array[j - 1] = temp;
    28                     }else{
    29                         flag = false;
    30                     }
    31                 }
    32             }
    33         }
    34         
    35     }
    36 }
  • 相关阅读:
    MYSQL 写入emoji表情字符处理
    openfire4.0.2源码 使用 IntelliJ IDEA 搭建开发环境
    strophe.js 插件 XMPP openfire
    OPENFIRE 使用Hazelcast插件进行集群
    LINUX提高openfire并发数(网上收集)
    LINUX 安装JDK (rpm格式和tar.gz格式)
    OPENFIRE 接收数据流程图
    OPENFIRE 启动流程
    linux查看cuda版本
    NvvmSupportError: libNVVM cannot be found. Do conda install cudatoolkit: library nvvm not found
  • 原文地址:https://www.cnblogs.com/jiangyi-uestc/p/5877753.html
Copyright © 2020-2023  润新知