亚洲免费一级高潮_欧美极品白嫩视频在线_中国AV片在线播放_欧美亚洲日韩欧洲在线看

您現(xiàn)在所在的位置:首頁(yè) >學(xué)習(xí)資源 > Unity游戲/VR/AR入門(mén)教材 > VR開(kāi)發(fā)入門(mén)教程42:簡(jiǎn)單算法之簡(jiǎn)單排序

VR開(kāi)發(fā)入門(mén)教程42:簡(jiǎn)單算法之簡(jiǎn)單排序

來(lái)源:奇酷教育 發(fā)表于:

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;

  }

  }