思路:
* 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. NYOJ127 星际之门(一)【定理】

    星际之门(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描写叙述 公元3000年,子虚帝国统领着N个星系,原先它们是靠近光束飞船来进行旅行的,近来,X博士发明了星际之门 ...

  2. 虚拟主机连接FTP发送"AUTH TLS"命令后提示“无法连接到服务器”

    https://help.aliyun.com/knowledge_detail/36417.html?spm=5176.11065259.1996646101.searchclickresult.7 ...

  3. php读取ini配置文件属性

    ini的内容格式如下,请根据自己的INI,格式修改下段程序. autostart = false font_size = font_color = red =================== fu ...

  4. Linux远程执行shell命令

    Linux远程执行shell命令   在Linux系统中,我们经常想在A机器上,执行B机器上的SHELL命令. 下面这种方案,是一种流行可靠的方案. 1.SSH无密码登录 # 本地服务器执行(A机器) ...

  5. 关于Discuz! X系列UC_Server 本地文件包含漏洞

    最近又发现discuz论坛被挂马了,决定好好研究一下discuz的漏洞,技术债始终要还是要还的 一.问题发现 快要睡觉的时候,突然收到一封邮件,发现服务器上的文件被篡改了,立即登录服务器,清空恶意文件 ...

  6. mysql触发器详解 mysql触发器

    目录 21.1. CREATE TRIGGER语法 21.2. DROP TRIGGER语法 21.3. 使用触发程序 MySQL 5.1包含对触发程序的支持.触发程序是与表有关的命名数据库对象,当表 ...

  7. vue2.0引入现有css文件

    1.在vue文件中的<style>内填写需要引用的文件 如: @import "./css/indexTest.css";

  8. Python AES_ECB_PKCS5加密代码

    https://blog.csdn.net/u010978840/article/details/79035463 ****************************************** ...

  9. 【资料下载区】【iCore4相关代码、资料下载地址】更新日期2018/02/24

    [iCore4相关文档][更新中...] iCore4原理图(PDF)下载iCore4引脚注释(PDF)下载iCore4机械尺寸(PDF)下载 [iCore4相关例程代码][ARM] DEMO测试程序 ...

  10. vue实例-转载

    http://blog.csdn.net/yuanyuanispeak/article/details/73526795