VR開(kāi)發(fā) VR教程 VR培訓(xùn)
程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計(jì)方法+語(yǔ)言工具和環(huán)境
做任何事情都有一定的步驟。為解決一個(gè)問(wèn)題而采取的方法和步驟,就稱(chēng)為算法。
冒泡排序
冒泡排序運(yùn)行起來(lái)非常慢,但在概念上排序算法中最簡(jiǎn)單的,在剛開(kāi)始研究排序時(shí)也是一種很好的排序算法
算法描述:
1.比較兩個(gè)數(shù)據(jù)項(xiàng)
2.如果左邊的數(shù)據(jù)項(xiàng)大,交換兩個(gè)數(shù)據(jù)項(xiàng)
3.向右移動(dòng)位置重復(fù)1、2步
編碼的關(guān)鍵點(diǎn):
1.需要冒泡的趟數(shù)
2.如何控制兩兩比較
3.如何優(yōu)化不和已冒泡的最大值進(jìn)行比較
public static void BubbleSort(int[] arr)
{
// 冒泡的次數(shù)
for (int i = 0; i < arr.Length-1; i++)
{
for (int j = 0; j < arr.Length-i-1; j++)
{
// j j+1
if (arr[j] > arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
選擇排序
選擇排序改進(jìn)了冒泡排序,冒泡是比較完就交換,而選擇排序則是選出最小的才交換
算法描述:
1.掃描整個(gè)序列
2.從中挑出最小的數(shù)據(jù)項(xiàng)
3.將最小的數(shù)據(jù)項(xiàng)放置到合適的位置
示例:6 5 4 7
假設(shè)第一個(gè)最小,驗(yàn)證是否最小,6 5,記憶最新的最小位置 5,重復(fù)以上2步到數(shù)組末尾,最小的位置被找到,0索引和2索引交換位置,如此循環(huán)選擇n-1次 程序結(jié)束。
public static void SelectSort(int[] arr)
{
// 選擇的次數(shù)
for (int i = 0; i < arr.Length-1; i++)
{
// 選出本次搜索最小的
// 為i這個(gè)位置挑選數(shù)值
int min = i;
for (int j = i+1; j < arr.Length; j++)
{
if (arr[j] < arr[min])
{
min = j;
}
}
// 交換min和i
if (min != i)
{
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
}
插入排序
插入排序是簡(jiǎn)單排序里最好的一種,但是稍微麻煩一些
算法描述:
1.假設(shè)部分有序(一般設(shè)第一個(gè)數(shù)據(jù)項(xiàng)為第一部分)
2.其他輸入依次插入之前的有序序列
若序列基本有序 此排序算法最優(yōu)
要注意為待插入元素找到合適位置
public static void InsertSort(int[] arr)
{
for (int i = 1; i < arr.Length; i++)
{
// 監(jiān)視哨
int temp = arr[i];
// 為監(jiān)視哨中保存的數(shù)據(jù)移動(dòng)位置
int insertIndex = i;
while (insertIndex > 0 && arr[insertIndex-1]>temp)
{
arr[insertIndex] = arr[insertIndex - 1];
insertIndex--;
}
arr[insertIndex] = temp;
}
}
Python交流群
635448130點(diǎn)擊加入群聊UI設(shè)計(jì)交流群
579150876點(diǎn)擊加入群聊Unity交流群
495609038點(diǎn)擊加入群聊HTML5交流群
645591648點(diǎn)擊加入群聊