一、数组的排序
对数组中的数字按照从小到大或从大到小进行排序
在不断的发展设计中逐步演练出排序的方式方法,称为排序算法
1、排序算法
排序算法有很多种,每一种都有各自排序的规则[算法]
注意:学习排序算法主要就是认识和理解排序的规则
2、冒泡排序算法
排序规则:相邻的两个元素进行比较
int[]arr = {6,4,2,5,3,1};
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-1-i; j++) {
System.out.print(j+"-"+(j+1)+" ");
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
System.out.println();
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+"\t");
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Jx0RBFt-1657796773121)(Img\mp.png)]
3、选择排序算法
排序规则:每次从头一个元素,依次和后续的元素进行比较(有选择的比较)
int[]arr = {6,4,2,5,3,1};
for (int i = 0; i < arr.length-1; i++) {
System.out.print(i+" - ");
for (int j = i+1; j < arr.length; j++) {
System.out.print(j+" ");
if(arr[i]>arr[j]){
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
System.out.println();
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+"\t");
}
二、面向对象
万物皆对象
以对象为主来设计程序的编程思想
编程思想:面向过程、面向对象
1、面向过程
c面向过程,以过程为主的,执行者身份
问题:吃饭,以面向过程角度,要做饭,买菜,洗菜,炒菜,…
2、面向对象
问题:吃饭,直接找饭店对象
问:把大象装进冰箱需要几步?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y9TX6TW4-1657796773123)(E:\DS220701\D0708\Img\bx.png)]
面向过程代码
public class Demo01 {
public static void main(String[] args) {
System.out.println("打开冰箱门");
System.out.println("把大象装进冰箱");
System.out.println("关闭冰箱门");
}
}
面向对象代码
第一步:先设计一个能解决这个问题的冰箱类
public class Fridge {
private String brand;
public void saveElephant(){
System.out.println("嗖的一声,冰箱起飞,飞往西双版纳...");
System.out.println("咔。。装了一头大象");
System.out.println("嗖的一声,起飞,飞回来了..");
}
}
第二步:创建对象,使用对象
public class Demo02 {
public static void main(String[] args) {
Fridge fridge = new Fridge();
fridge.saveElephant();
}
}
三、类
类是创建对象的模板,类就是分类、类型
一般程序中设计的类都是对现实世界中事物的抽象,如:
- 网上商城中的商品类—现实中的商品
- 医疗管理系统中的病人类、医生类、药品类等等—现实中的病人、医生、药物
类一般理解为两类:
- 作为数据载体的实体类(对象存数据,存在属性中)
- 作为功能处理的功能类
类的定义:
}
四、对象
对象是类的实例,类似于工厂造锅的模具,锅就是模具的实例
对象的创建
Goods goods = new Goods();
五、模拟玩家
战斗!!!
玩家类
public class Player {
private String name;
private String type;
private int life;
private int defense;
private int attack;
public void say(){
System.out.print("我叫"+name+",是一个"+type);
System.out.println(",生命值高达"+life+",防御值"+defense+",攻击力"+attack);
}
public void pk(Player p){
int flag = 0;
while(true){
this.say();
p.say();
if(flag==0){
int harm = this.attack-p.defense;
System.out.println(p.name+"掉血"+harm);
p.life-=harm;
flag=1 ;
}else{
int harm = p.attack-this.defense;
System.out.println(this.name+"掉血"+harm);
this.life-=harm;
flag=0 ;
}
if(this.life<=0){
System.out.println(p.name+"打败了"+this.name);
break;
}
if(p.life<=0){
System.out.println(this.name+"打败了"+p.name);
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public Player() {
}
public Player(String name, String type, int life, int defense, int attack) {
this.name = name;
this.type = type;
this.life = life;
this.defense = defense;
this.attack = attack;
}
}
测试类
public class PlayerTest {
public static void main(String[] args) {
Player p1 = new Player("龙傲天", "战士", 100, 20, 30);
Player p2 = new Player("赵日天", "法师", 70, 12, 45);
p1.pk(p2);
}
}
结果演示
我叫龙傲天,是一个战士,生命值高达100,防御值20,攻击力30
我叫赵日天,是一个法师,生命值高达70,防御值12,攻击力45
赵日天掉血18
我叫龙傲天,是一个战士,生命值高达100,防御值20,攻击力30
我叫赵日天,是一个法师,生命值高达52,防御值12,攻击力45
龙傲天掉血25
我叫龙傲天,是一个战士,生命值高达75,防御值20,攻击力30
我叫赵日天,是一个法师,生命值高达52,防御值12,攻击力45
赵日天掉血18
我叫龙傲天,是一个战士,生命值高达75,防御值20,攻击力30
我叫赵日天,是一个法师,生命值高达34,防御值12,攻击力45
龙傲天掉血25
我叫龙傲天,是一个战士,生命值高达50,防御值20,攻击力30
我叫赵日天,是一个法师,生命值高达34,防御值12,攻击力45
赵日天掉血18
我叫龙傲天,是一个战士,生命值高达50,防御值20,攻击力30
我叫赵日天,是一个法师,生命值高达16,防御值12,攻击力45
龙傲天掉血25
我叫龙傲天,是一个战士,生命值高达25,防御值20,攻击力30
我叫赵日天,是一个法师,生命值高达16,防御值12,攻击力45
赵日天掉血18
龙傲天打败了赵日天
是一个法师,生命值高达52,防御值12,攻击力45 赵日天掉血18 我叫龙傲天,是一个战士,生命值高达75,防御值20,攻击力30 我叫赵日天,是一个法师,生命值高达34,防御值12,攻击力45 龙傲天掉血25 我叫龙傲天,是一个战士,生命值高达50,防御值20,攻击力30 我叫赵日天,是一个法师,生命值高达34,防御值12,攻击力45 赵日天掉血18 我叫龙傲天,是一个战士,生命值高达50,防御值20,攻击力30 我叫赵日天,是一个法师,生命值高达16,防御值12,攻击力45 龙傲天掉血25 我叫龙傲天,是一个战士,生命值高达25,防御值20,攻击力30 我叫赵日天,是一个法师,生命值高达16,防御值12,攻击力45 赵日天掉血18 龙傲天打败了赵日天
|