您现在所在的位置:首页 >学习资源 > Unity游戏/VR/AR入门教材 > VR开发入门教程42:简单算法之简单排序

VR开发入门教程42:简单算法之简单排序

来源:奇酷教育 发表于:

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;

  }

  }