作业:
过三关
老孙回到花果山,众猴为迎接大圣的归来,决定列队表演猴接棍,大圣大悦,可一看队伍中高矮参差不齐,皱起眉头说到,先排好队再说,怎么没什么长进呢?
第一关:[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