冒泡排序、选择排序、插入排序回顾练习

/**
 * 猴子排队
 */
package com.test1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Demo1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//定义一个可以装五个对象的数组
		int size=5;
		Monkey []monkeys=new Monkey[size];
		
		InputStreamReader inputStreamReader=new InputStreamReader(System.in);
		BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
		
		//初始化各个猴子,键盘输入
		for (int i = 0; i < monkeys.length; i++) {
			System.out.println("请输入第"+(i+1)+"只猴子的高度:");
			try {
				String height=bufferedReader.readLine();
				monkeys[i]=new Monkey((i+1)+"",Float.parseFloat(height));
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		//让老猴子排序
		Monkey oldMonkey=new Monkey("0", 1.2f);
		
		//排序
		//oldMonkey.sort(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 sort(Monkey []monkeys) {
		//采用冒泡排序(一共循环四趟)
		for (int i = 0; i < monkeys.length-1; i++) {
			//内层循环
			for (int j = 0; j < monkeys.length-1; j++) {
				if (monkeys[j].height>monkeys[j+1].height) {
					Monkey tempMonkey=null;
					tempMonkey=monkeys[j];
					monkeys[j]=monkeys[j+1];
					monkeys[j+1]=tempMonkey;
				}
			}
		}
	}
	
	public void selectSort(Monkey []monkeys) {
		//选择排序
		for (int i = 0; i < monkeys.length; i++) {
			//暂时认定第一个身高最低
			Monkey tempMinMonkey=monkeys[i];
			int tempMinIndex=i;
			for (int j = i+1; j < monkeys.length; j++) {
				if (tempMinMonkey.height>monkeys[j].height) {
					tempMinMonkey=monkeys[j];
					tempMinIndex=j;
				}
			}
			if (tempMinIndex!=i) {
				monkeys[tempMinIndex]=monkeys[i];
				monkeys[i]=tempMinMonkey;
			}		
		}
	}
	
	public void insertSort(Monkey []monkeys) {
		//插入排序
		for (int i = 0; i < monkeys.length-1; i++) {
				int tempIndex=i;
				while (tempIndex>=0&&monkeys[tempIndex].height>monkeys[tempIndex+1].height) {
					Monkey tempMonkey=monkeys[tempIndex];
					monkeys[tempIndex]=monkeys[tempIndex+1];
					monkeys[tempIndex+1]=tempMonkey;
					tempIndex--;
			}
		}
	}
	
	//显示队列
	public void show(Monkey []monkeys) {
		System.out.println("排序后:");
		for (int i = 0; i < monkeys.length; i++) {
			System.out.println("猴子编号:"+monkeys[i].monkeyId+",身高:"+monkeys[i].height);
		}
	}
}


猜你喜欢

转载自blog.csdn.net/noreaday/article/details/79565270