unity常用演算法,設計模式

2021-09-28 20:35:11 字數 1798 閱讀 4788

依次比較兩個相鄰的元素,如果前乙個元素大於後乙個元素,則交換,直到最後乙個元素為最大值,然後重複相同的動作,直到倒數第二個元素為第二大,依次類推。

時間複雜度是o(n2)穩定性最好,但是耗時多

穩定性:保證排序前兩個相等的數在序列的前後位置在排序後前後順序還是相同的。

--lua實現:

function sort1(arr)

for i=1,#arr do

for j=1,#arr-i do

if(arr[j]>arr[j+1]) then

arr[j],arr[j+1]=arr[j+1],arr[j]

endend

endend

第一次總待排序的資料元素中選出最小的乙個元素(或者最大元素),與數列起始處的元素交換位置,放在數列的起始位置,然後從剩餘未排序元素中尋找到最小元素,放到已排序元素的後面,以此類推,直到全部待排序的資料元素個數為0。

時間複雜度是 o(n2) ,穩定性不好,優點是不占用額外記憶體空間。

function slect_sort(arr)

for i=1,#arr do

local minindex=i

for j=i,#arr do

if(arr[minindex]>arr[j]) then

minindex=j

endend

arr[minindex],arr[i]=arr[i],arr[minindex]

endend

使用分治法

任意選擇乙個元素,依次將剩餘元素中小於基準元素的值放在其左側,大於該基準元素的放置在其右側,然後取基準元素前半段和後半段分別進行同樣的處理,以此類推,直至各序列剩餘乙個元素時,即完成排序。

時間複雜度(平均):o(nlogn)

在這裡插入**片
將地圖劃分為多個方塊來表示搜尋空間,建立兩個列表,乙個open列表,乙個closed列表,open表示要搜尋的方塊,close表示不考慮的方塊,把地圖上不能通行的塊也新增到close列表裡,首先把人物所在的位置放在closed列表裡,然後把和人物所在位置相鄰的方塊新增到open列表裡,給每個方塊乙個g值和h值,g是從開始點到當前方塊的移動量,h是當前方塊到目標點的的移動估算量,這個值為估算值,不算障礙物的最短距離。g加h為當前方塊的和值f。

1.將方塊s新增到open列表裡,該列表有最小的和值。

2.將方塊從open移除,新增到closed列表裡。

3.對於與s相鄰的每一塊可通行的方塊t:

如果在closed列表裡,不管

如果不在open列表裡,新增它然後計算它的和值。將當前節點設定為其父節點。

如果已經在open列表裡,當使用當前路徑到達那裡,檢查f和值是否更小,如果是,更新它的和值和前繼。

4.如此迴圈,不斷從open佇列中尋找最小的點作為當前節點,並加入周圍節點,不斷更新鄰近域的g和h值,看能不能比原來的g值更小,如果小就更新,否則不更新,當前節點算完就放入close佇列,再從open佇列中尋找最小的點……

5.直到把終點加入open佇列中。

6.最後路徑就是從終點開始,沿著父指標不斷回溯,回到起始點,這個路徑就是最短路徑。

保證乙個類僅有乙個例項,並提供乙個全域性訪問點

如果為空則建立物件,

它將物件與物件之間建立一種依賴關係,當其中乙個物件發生變化時,它會將這個變化通知給與其建立關係的物件中,實現自動化的通知更新。

在遊戲開發中,比如ui上有乙個下拉的list,我選擇了其中的每一項,都會導致ui介面的變化,比如我選擇「強化」,對應出現強化裝備的介面;我選擇「鑲嵌」,就會出現鑲嵌的介面。

常用設計模式

mvc 模型 檢視 控制器 通過 委託其他物件做事情 或者充當某些功能的中間類 觀察者 在乙個物件或者值發生變化時,對它的觀察者發出通知 單例模式 應用程式執行的過程中只有乙個例項 工廠模式 為物件的建立提供統一的介面 簡單工廠模式,工廠方法模式,抽象工廠模式 裝飾模式 為類動態新增方法 一般用ca...

常用設計模式

常用設計模式有工廠模式 道理模式以及生產者消費者模式 使用靜態內部類的方式可以保證執行緒安全,並且比同步方法的效能好。package com.qqyumidi public class singleton 私有化建構函式 private singleton public static singlet...

常用設計模式

工作一年c 服務端開發,最常用的就是單例模式,那我就從這個開始 1.單例模式是一種只能宣告乙個物件的特殊類 只有乙個例項 該模式的作用是節約系統資源。實現 建構函式和拷貝建構函式私有化。2.簡單工廠模式 簡單工廠模式實際就是建立乙個工廠類,該類根據建立產品的型別引數來呼叫不同的產品類的建構函式 3....