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;
}
}