作业:
过三关
老孙回到花果山,众猴为迎接大圣的归来,决定列队表演猴接棍,大圣大悦,可一看队伍中高矮参差不齐,皱起眉头说到,先排好队再说,怎么没什么长进呢?
第一关:[Work17.java]
领头的老猴于是从队伍一头开始逐一的比较、交换,开始按高矮排列队伍。(设计冒泡排序的程序给队伍排序)。一柱香后,老猴还在不知疲倦地来回调整,悟空这时已不耐烦了,大叫道:快点!快点!不然我撤了你。
x
/**
* 猴子过三关(冒泡排序)
*/
import java.util.Scanner;
public class Work17 {
public static void main(String[] args) {
//定义可以装五只猴子的对象数组
int size=5;
Monkey []monkeys=new Monkey[size];
Scanner sr=new Scanner(System.in);
//初始化各个猴子
for(int i=0;i<monkeys.length;i++){
System.out.println("请输入第"+(i+1)+"只猴子的高度:");
float height=sr.nextFloat();
monkeys[i]=new Monkey((i+1)+"",height);
}
//让老猴排序
Monkey oldMonkey=new Monkey("1000", 1.2f);
//排序
oldMonkey.bubbleSort(monkeys);
//验证输出
oldMonkey.show(monkeys);
}
}
//猴子类
class Monkey{
private String monkeyId;
private float height;
public Monkey(String mokeyId,float height){
this.monkeyId=mokeyId;
this.height=height;
}
//冒泡排序
public void bubbleSort(Monkey []monkeys){
float tempHeight=0f;
String tempId="";
//外层循环length-1
for(int i=0;i<monkeys.length-1;i++){
//内层循环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;
//编号交换
tempId=monkeys[j].monkeyId;
monkeys[j].monkeyId=monkeys[j+1].monkeyId;
monkeys[j+1].monkeyId=tempId;
}
}
}
}
//显示队列
public void show(Monkey []monkeys){
for(int i=0;i<monkeys.length;i++){
System.out.println("猴子编号:"+monkeys[i].monkeyId+"身高:"+monkeys[i].height);
}
}
}
-------------------------------------------------------------------------------
第二关:[Work18.java]
老猴没办法,只有再次开始排。这时他用选择法,希望能快一点(你帮他设计这个选择排序程序)可大圣还对速度不满意,说道:你难道不能排的更快些吗?
x
/**
* 猴子过三关(选择排序)
*/
import java.util.Scanner;
public class Work18 {
public static void main(String[] args) {
//定义可以装五只猴子的对象数组
int size=5;
Monkey []monkeys=new Monkey[size];
Scanner sr=new Scanner(System.in);
//初始化各个猴子
for(int i=0;i<monkeys.length;i++){
System.out.println("请输入第"+(i+1)+"只猴子的高度:");
float height=sr.nextFloat();
monkeys[i]=new Monkey((i+1)+"",height);
}
//让老猴排序
Monkey oldMonkey=new Monkey("1000", 1.2f);
//排序
oldMonkey.selectSort(monkeys);
//验证输出
oldMonkey.show(monkeys);
}
}
//猴子类
class Monkey{
private String monkeyId;
private float height;
public Monkey(String mokeyId,float height){
this.monkeyId=mokeyId;
this.height=height;
}
//选择排序(用外循环做为下标交换)
public void selectSort(Monkey []monkeys){
float tempHeight=0f;
String tempId="";
for(int i=0;i<monkeys.length;i++){
//认为下标为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;
tempId=monkeys[minIndex].monkeyId;
monkeys[minIndex].monkeyId=monkeys[i].monkeyId;
monkeys[i].monkeyId=tempId;
}
}
}
}
//显示队列
public void show(Monkey []monkeys){
for(int i=0;i<monkeys.length;i++){
System.out.println("猴子编号:"+monkeys[i].monkeyId+"身高:"+monkeys[i].height);
}
}
}
-------------------------------------------------------------------------------
第三关[Work19.java]
老猴只好最后赌一把,采用还不是很熟悉的插入法排序。聪明的你,能够帮助老猴解决这个问题吗?
/**
* 猴子过三关(插入排序)
*/
import java.util.Scanner;
public class Work19 {
public static void main(String[] args) {
//定义可以装五只猴子的对象数组
int size=5;
Monkey []monkeys=new Monkey[size];
Scanner sr=new Scanner(System.in);
//初始化各个猴子
for(int i=0;i<monkeys.length;i++){
System.out.println("请输入第"+(i+1)+"只猴子的高度:");
float height=sr.nextFloat();
monkeys[i]=new Monkey((i+1)+"",height);
}
//让老猴排序
Monkey oldMonkey=new Monkey("1000", 1.2f);
//排序
oldMonkey.insertSort(monkeys);
//验证输出
oldMonkey.show(monkeys);
}
}
//猴子类
class Monkey{
private String monkeyId;
private float height;
public Monkey(String mokeyId,float height){
this.monkeyId=mokeyId;
this.height=height;
}
//插入排序
public void insertSort(Monkey []monkeys){
//开始排序
for(int i=1;i<monkeys.length;i++){
//先记录该猴子的身高
float insertHeight=monkeys[i].height;
String insertId=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=insertId;
}
}
//显示队列
public void show(Monkey []monkeys){
for(int i=0;i<monkeys.length;i++){
System.out.println("猴子编号:"+monkeys[i].monkeyId+"身高:"+monkeys[i].height);
}
}
}
原文:https://www.cnblogs.com/xuxaut-558/p/10045791.html