材料:猴子排序,按照身高来从小到大来排序。

第一关:

老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍。(冒泡排序)

第二关:

太慢了,给第一关增加难度,进行选择排序

第三关:

最后,尝试选择用插入排序法,来进行排序。

测试类:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; //功能:猴子排序
public class MonkeySelect { public static void main(String[] args) {
// TODO Auto-generated method stub
// 定义一个可以装5只猴子的对象数组
int size = 5;
Monkey[] monkeys = new Monkey[size]; InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
// 初始化各个猴子
for (int i = 0; i < monkeys.length; i++) {
System.out.println("请输入第" + (i + 1) + "只猴子的高度"); try {
String height = br.readLine();
monkeys[i] = new Monkey((i + 1) + "", Float.parseFloat(height));
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 让老猴子排序
Monkey oldMonkey = new Monkey("1000", 1.2f);
// 冒泡排序
oldMonkey.bubbleSort(monkeys); // oldMonkey.selectSort(monkeys);选择排序调用
// oldMonkey.insertSort(monkeys);插入排序调用 // 验证
oldMonkey.show(monkeys);
}
}

猴子类(功能):

// 猴子
class Monkey {
private String monkeyId;
private float height; public Monkey(String monkeyId, float height) {
this.monkeyId = monkeyId;
this.height = height;
} // 插入排序
public void insertSort(Monkey[] monkeys) {
// 开始排序
for (int i = 0; i < monkeys.length; i++) {
// 先记录该猴子的身高
float insertHeight = monkeys[i].height;
String insertNo = monkeys[i].monkeyId;
int insertIndex = i - 1; while (insertIndex >= 0
&& monkeys[insertIndex].height > insertHeight) {
monkeys[insertIndex + 1].height = monkeys[insertIndex].height;
monkeys[insertIndex + 1].monkeyId = monkeys[insertIndex].monkeyId;
insertIndex--;
}
// 插入
monkeys[insertIndex + 1].height = insertHeight;
monkeys[insertIndex + 1].monkeyId = insertNo;
}
} // 选择排序
public void selectSort(Monkey[] monkeys) {
float tempHeight = 0.0f;
String tempNo = "";
for (int i = 0; i < monkeys.length; i++) { float minHeight = monkeys[i].height;
int minIndex = i; // 和后面的比较
for (int j = i + 1; j < monkeys.length; j++) {
if (minHeight > monkeys[j].height) {
// 修正一下最小值
minHeight = monkeys[j].height;
// 修正下标
minIndex = j;
}
}
if (minIndex != i) {
// 交换
tempHeight = monkeys[minIndex].height;
monkeys[minIndex].height = monkeys[i].height;
monkeys[i].height = tempHeight; tempNo = monkeys[minIndex].monkeyId;
monkeys[minIndex].monkeyId = monkeys[i].monkeyId;
monkeys[i].monkeyId = tempNo;
}
}
} // 冒泡排队
public void bubbleSort(Monkey[] monkeys) {
float tempHeight = 0.0f;
String tempNo = ""; // 冒泡
for (int i = 0; i < monkeys.length - 1; i++) {
for (int j = 0; j < monkeys.length - 1 - i; j++) {
// 判断
if (monkeys[j].height > monkeys[j + 1].height) {
// 身高
tempHeight = monkeys[j].height;
monkeys[j].height = monkeys[j + 1].height;
monkeys[j + 1].height = tempHeight;
// 编号
tempNo = monkeys[j].monkeyId;
monkeys[j].monkeyId = monkeys[j + 1].monkeyId;
monkeys[j + 1].monkeyId = tempNo; }
}
} } // 显示队列
public void show(Monkey[] monkeys) {
for (int i = 0; i < monkeys.length; i++) {
System.out.println("猴子编号:" + monkeys[i].monkeyId + " 身高:"
+ monkeys[i].height);
}
}
}

过三关 Java冒泡排序选择排序插入排序小练习的更多相关文章

  1. java冒泡排序-选择排序-插入排序-使用API中文文档直接调用函数

    import java.util.Arrays; public class ArrayDemo2_3 { public static void main(String []args) { //---- ...

  2. 学习C#之旅 冒泡排序,选择排序,插入排序,希尔排序[资料收集]

    关于冒泡排序,选择排序,插入排序,希尔排序[资料收集]  以下资料来源与网络 冒泡排序:从后到前(或者从前到后)相邻的两个两两进行比较,不满足要求就位置进行交换,一轮下来选择出一个最小(或最大)的放到 ...

  3. python算法(一)基本知识&冒泡排序&选择排序&插入排序

    本节内容: 算法基本知识 冒泡排序 选择排序 插入排序 1. 算法基本知识 1.1 什么是算法? 算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 ...

  4. 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现

    这五种排序算法难度依次增加. 冒泡排序: 第一次将数组相邻两个元素依次比较,然后将大的元素往后移,像冒泡一样,最终最大的元素被移到数组的最末尾. 第二次将数组的前n-1个元素取出,然后相邻两个元素依次 ...

  5. 冒泡排序 选择排序 插入排序希尔排序 java

    双向冒泡 package com.huang; public class _014_bubb_sort { int[] b={1,2}; static int a[]={12,4,35,65,43,6 ...

  6. 冒泡排序 & 选择排序 & 插入排序 & 希尔排序 JavaScript 实现

    之前用 JavaScript 写过 快速排序 和 归并排序,本文聊聊四个基础排序算法.(本文默认排序结果都是从小到大) 冒泡排序 冒泡排序每次循环结束会将最大的元素 "冒泡" 到最 ...

  7. php基础排序算法 冒泡排序 选择排序 插入排序 归并排序 快速排序

    <?php$arr=array(12,25,56,1,75,13,58,99,22);//冒泡排序function sortnum($arr){    $num=count($arr);    ...

  8. 算法 排序lowB三人组 冒泡排序 选择排序 插入排序

    参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一 ...

  9. lowB三人组算法-冒泡排序-选择排序-插入排序

    冒泡排序 时间复杂度:O(n2)  算法稳定 第一趟,从第一个数开始,相邻两个数比较,大的数交换放后,交换到最后位置得出一个第一大数 第二趟,从第一个数开始,相邻两个数比较,大的数交换放后,交换到倒数 ...

随机推荐

  1. 延迟执行(Invoke 函数)和消息发送(SendMessage 函数)

    Invoke 函数需要继承 MonoBehaviour 类后才能使用. Invoke(string str,float a):a 秒后执行名为 str 函数(只会调用一次). Invoke(strin ...

  2. linux下设置计划任务执行python脚本

    linux下设置计划任务执行python脚本 简介 crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自 ...

  3. [solution] JZOJ-5795 词典

    [solution]JZOJ-5795 词典 题面 Description 小C有$n$个字符串$T_1 T_n$,给出$m$个询问 第$i$个询问给出一个字符串$S_i$,对于每个询问,我们可以得到 ...

  4. FZU.Software Engineering1816 ·The Second Assignment of the Team

    1.Team Leader Link:        柯奇豪:点我 2.NABCD Model: Need(需求)——客户需求是什么? *. 希望能够有一款集成日常办公所需功能的软件(如:想法搜集.投 ...

  5. magic cube

    搜索题, 每个状态能扩展出12种状态,最多进行5次旋转12^5 要用到iddfs,或者我看到网上其他人用的ida* 我也是参考了别人的代码,而且这个题vj上有点问题,我看数据看了半天,愣是没看明白第二 ...

  6. python学习第五章

    1.继承 即是一个派生的类(derived class)继承基类(base class)的字段和方法,继承也允许把一个 派生类的对象作为 一个基类 对象对待.通俗来讲就是方便,继承前人的代码,减少工作 ...

  7. 6. ASP.NET MVC 5.0 中的HTML Helper【HTML 帮助类】

    这篇文章,我将带领大家学习HTML Helper.[PS:上一篇-->5.ASP.NET MVC 中的Area[区域]是什么] HTML Helpers是用来创建HTML标签进而创建HTML控件 ...

  8. 9.3 翻译系列:数据注解特性之Key【EF 6 Code-First 系列】

    原文链接:http://www.entityframeworktutorial.net/code-first/key-dataannotations-attribute-in-code-first.a ...

  9. 背水一战 Windows 10 (68) - 控件(控件基类): UIElement - Pointer 相关事件, Tap 相关事件, Key 相关事件, Focus 相关事件

    [源码下载] 背水一战 Windows 10 (68) - 控件(控件基类): UIElement - Pointer 相关事件, Tap 相关事件, Key 相关事件, Focus 相关事件 作者: ...

  10. typescript handbook 学习笔记2

    概述 这是我学习typescript的笔记.写这个笔记的原因主要有2个,一个是熟悉相关的写法:另一个是理清其中一些晦涩的东西.供以后开发时参考,相信对其他人也有用. 学习typescript建议直接看 ...