思路:
* 1.首先分左右
* 2.分好再排序(左边和右边都单独排序)

第一步:分左右

可得注意了:

大体思路最先是从两头出发分成4种情况讨论(左or右,奇数or偶数)循环处理,出口是双层的嵌套循环(外面的循环条件可能已经失效)

所以以后凡是遇到嵌套循环一定要记得注意一下是否需要在内层加上外层判断条件(记不住可以自己慢慢debug)

public class page02 {
public static void main(String[] args) {
int[] nums = {1, 2, 49, 1, 52, 804, 0, 3, 76, 26, 2, 1, 2};
devide(nums);
range(nums);
show(nums);
}
private static void devide(int[] numbers) {
int a = 0;
int b = numbers.length - 1;
while (a < b) {
while (numbers[a] % 2 == 0 && numbers[b] % 2 == 0 && a < b) {
//左右都是偶数
a++;
}
while (numbers[a] % 2 != 0 && numbers[b] % 2 != 0 && a < b) {
//左右都是奇数
b--;
}
while (numbers[a] % 2 != 0 && numbers[b] % 2 == 0 && a < b) {
//左边是奇数,右边是偶数
//左边是偶数,右边是奇数
int temp;
temp = numbers[a];
numbers[a] = numbers[b];
numbers[b] = temp; }
while (numbers[a] % 2 == 0 && numbers[b] % 2 != 0 && a < b) {
//左边是偶数,右边是奇数
a++;
b--;
}
}
}

第二步:排序

又是循环嵌套,除了注意外部(比如处理偶数这一边的排序的时候一定要加上&& (i < count)

)条件外,这里格外需要注意的就是初始条件了(比如处理偶数这一边的排序的初始条件的时候i = count - 1):

/*直接插入排序*/
private static void range(int[] arr) {
int i = 0;
int count = 0;
while (arr[i] % 2 == 0) {
/*计算出偶数的个数*/
count = count + 1;
i++;
}
/*对所有偶数进行排序*/
for (i = 1; i < count; i++) {
for (int j = 0; (j < i) && (i < count); j++) {
if (arr[i] < arr[j]) {/*后面的更小*/
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
} /*对剩下的奇数排序*/
for (i = count - 1; i < arr.length; i++) {
for (int j = count; j < i; j++) {
if (arr[i] < arr[j]) {/*后面的更小*/
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}

最后打印输出:

private static void show(int[] numbers) {
for (int i = 0; i < numbers.length; i++) {
System.out.println(" " + numbers[i]);
}
System.out.println("=================================================");
}
												

有多个正整数存放在数组中,编写一个函数要求偶数在左边由小到大顺序放置,奇数在右边,也是由小到大顺序放置,Java实现的更多相关文章

  1. 已知一个字符串S 以及长度为n的字符数组a,编写一个函数,统计a中每个字符在字符串中的出现次数

    import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/6 21:04 * @description ...

  2. 【C语言】在两个数成对出现的数组中找到一个单独的数。

    //在两个数成对出现的数组中找到一个单独的数.比如{1,2,3.3,1,4.2},即找出4 #include <stdio.h> int find(int arr[], int len) ...

  3. [jstips]向数组中插入一个元素

    向现有数组中插入一个元素是经常会见到的一个需求.你可以: 使用push将元素插入到数组的尾部: 使用unshift将元素插入到数组的头部: 使用splice将元素插入到数组的中间: 上面那些方法都是常 ...

  4. 用JS编写一个函数,返回数组中重复出现过的元素

    用JS编写一个函数,返回数组中重复出现过的元素,见下面的代码: , , , , , , , ]; var getRepeat = function (arr) { var obj = {}; , le ...

  5. C#如何删除数组中的一个元素

    C#如何删除数组中的一个元素,剩余的元素组成新数组,数组名不变double[] arr = new double[n];需要删除的是第m+1个数据arr[m]求新数组arr.(新数组arr包含n-1个 ...

  6. 数组:获取数组中最后一个数据end()函数

    今天来学习一下end()函数 1.案例:直接获取数组中最后一个数据 代码部分 结果: 2.案例:从url中获取最后一个数据 代码部分: 结果: 总结: 1.有时候我们需要去获取数据库中,id最大的那个 ...

  7. 在ubuntu linux 中编写一个自己的python脚本

    在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pmpy为例(play music python),为了区别之前说的bash脚本添加了py后缀),来 ...

  8. 在ubuntu linux 中编写一个自己的bash脚本

    在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pm为例(play music)),来实现音乐的播放.注:本人ununut中安装了audacious ...

  9. /编写一个函数,要求从给定的向量A中删除元素值在x到y之间的所有元素(向量要求各个元素之间不能有间断), 函数原型为int del(int A ,int n , int x , int y),其中n为输入向量的维数,返回值为删除元素后的维数

    /** * @author:(LiberHome) * @date:Created in 2019/2/28 19:39 * @description: * @version:$ */ /* 编写一个 ...

随机推荐

  1. PowerShell 显示气球提示框 1

    #加载 Winform 程序集,使用Out-Null抑制输出 [system.Reflection.Assembly]::LoadWithPartialName('System.Windows.For ...

  2. SNF软件开发机器人-子系统-表单-表单设计

    表单设计 在我们做程序时总要对表单的内容进行设计,然而对控件位置等信息的调整总是麻烦的,还常常容易出错.SNF软件机器人完美的解决了这个问题. 1.效果展示: 2.使用说明: (1)打开页面,选中开发 ...

  3. [svc]证书学习索引

    数字证书基础知识 对称加密/非对称加密细枝末节 openssl对称非对称加密实战 使用OpenSSL实现CA证书的搭建过程 通过openssl生成证书 HTTPS证书生成原理和部署细节 证书各个字段的 ...

  4. 修改Egret引擎代码的方法

    某些情况下,我们需要修改Egret引擎的源码,我们可以在源码目录(一般如下:xxx\Egret\engine\x.x.x\src\egret)下直接修改ts代码. 在对应的项目下打开CMD命令行,输入 ...

  5. 【Wildfly】从默认的自动重启修改为手动重启

    最近在使用Wildfly作为Web服务器,用的是10.0.0版本.默认情况下,Wildfly的部署方式是通过将项目放到%WILDFLY_HOME%\standalone\deployments下的,然 ...

  6. 备份与还原ORACLE数据库(通过CMD命令执行)

    31.1:(若用程序调用cmd,则在备份和还原 末尾语句加上 2>&1 ,直接运行则不需要加) --备份:     1) exp SA/"""abc@123 ...

  7. C#学习笔记(34)——委托传值(回忆版)

    说明(2018-4-6 20:31:03): 1. 昨天晚上看三层,看完第一天的最后一节,会员的修改和增加,感觉欲仙欲死,果断关机睡觉. 2. 上午搞了半天哈利波特的原版书epub的下载,结果都没发现 ...

  8. Java根据子节点递归父节点

    先上数据库结构图和树形图: 项目中的一个需求是获取一个商品所属的二级分类名称. 思路分析,首先,我们是可以拿到当前商品所属的子分类的,比如说我买的是一个iPhone SE,对应的分类名称是 iPhon ...

  9. 如何通过ajax来获取返回值

    preface 今天使用ajax向后端取数据的时候,按照正常的写法,死活return不了值,所以看了下ajax的帮助手册,发现了这个参数async:false,这个参数是说async表示不是异步执行了 ...

  10. CentOS安装和配置Docker和Nginx

    纯粹记录下: 1 安装Docker容器: yum install docker-ce 2. 搜索官网nginx docker search nginx 3. 找到需要的版本安装: docker pul ...