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