关于java:Java游戏编程之常用算法

46次阅读

共计 1744 个字符,预计需要花费 5 分钟才能阅读完成。

前言

咱们做 Web 开发时必定不须要用到算法,并且咱们在应用 Java 进行 Web 服务开发时,个别也用不到什么算法,包含什么各种分布式的微服利用开发。

然而,只有咱们进行游戏开发,个别都会用到算法的。

什么是算法?

算法是一种解决问题的无效办法 (effective method),该办法应用无限的指令序列来解决问题。(An algorithm is an effective method for solving a problem using a finite sequence of instructions)。

每个算法是一个实现简单工作的列表,该列表是被定义好的(固定的)。算法从一个初始状态开始,而后指令形容了一个到胜利状态的固定解决序列,最初到完结状态。

数据结构—指针链表

在指针列表中的每个元素都指针类型 (Java 类内置指针),并且在该列表中蕴含两个整数,别离由指针的 x 和 y 坐标示意。另外,因为 Point 类是由 Java 内置的,所以面向对象的编程曾经能够这样应用了。

指针构造:是一个线性构造,它应用一个结点指向另外一个结点,从开始结点到完结点。

参见上面的图示

代码对应

插入排序

规定是每次将一个待排序的项,按其关键字大小插入到它后面曾经排好序的子序列中的适当地位,直到全副记录插入实现为止。该办法经常被应用到桥牌游戏中。在计算机程序中,咱们须要确保空间能够插入新的元素,并且把较大的元素放到它的左边地位。如下图所示:

ListSortExample 类

import static java.lang.System.*;
/**
    性能:应用链表数据结构实现的插入排序
    备注:应用单向链表数据结构来实现插入排序算法 -- 应用链表的操作列表的速度最快!*/
public class ListSortExample{ 
    // 定义一个形象数据 Node 用来示意指针类型
    static class Node{ 
        int val; // 实现数据
        Node next; // 指针
        
        // 应用构造办法来初始化指针链表
        Node(int v, Node t) { 
            val = v; 
            next = t; 
        } 
    } 
    
    // 创立链表结点 -- 从控制台读取数据
    static Node create(){ 
        // 申明第一个结点,并且初始化它
        Node a = new Node(0, null); 
        out.println("请输出数字:(按 ctrl+ z 示意输出后果)");
        // 如果控制台输出不完结,那么始终创立链表
        for (In.init(); !In.empty();) 
            a.next = new Node(In.getInt(), a.next); 
        return a; 
    } 
    
    // 对链表进行排序解决
    static Node sort(Node a) {Node t, u, x, b = new Node(0, null); 
        // 如果传入的参数 a 下一个结点不为空
        while (a.next != null){ 
            // 那么把 a 的指针指向 t 结点
            t = a.next; 
            // 把 t 结点的指针指向 u 结点
            u = t.next; 
            // 把 a 的指针指向 u -- 于是现是 a ->u->t
            a.next = u; 
            // 上面是排序的替换算法:如果链表中大于一的元素,那么开始排序
            for (x = b; x.next != null; x = x.next) 
                if (x.next.val > t.val) 
                    break; 
            // 否则把 b 的指针指向 t 的指针
            t.next = x.next; 
            // 而后把 b 的指针指向 t 结点
            x.next = t; 
          } 
        return b; 
    } 
    // 在控制台显示排序后果
    static void print(Node h){out.println("插入排序后果为:");
        for (Node t = h.next; t != null; t = t.next) 
            out.println(t.val + ""); 
    } 
    
    public static void main(String[] args) {print(sort(create())); 
    } 
} 

运行成果

总结

算法理论是在无处不在,当咱们应用 Java 提供的 API 时,咱们曾经在应用算法了,比方 LinkedList、Vector、List、Queue 等等,只不过那些算法是他人提供的,并且是通过了实际测验的工具类。

然而,咱们都晓得就算法来说,它是没有最好的,只有更好的。因而,在游戏开发中,有时候是须要咱们本人来书写算法的,以便实现特定的要求。
图片起源:http://www.lyouxi.com/ 游戏盒子

正文完
 0