我是靠谱客的博主 朴实小熊猫,这篇文章主要介绍【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)一、冒泡排序算法二、选择排序算法三、插入排序算法,现在分享给大家,希望可以做个参考。

一、冒泡排序算法

冒泡排序算法是程序设计中一种较简单的排序算法,其原理是重复的对要排序的数进行大小比较,一次比较两个元素,如果第一个数比第二个数大,则交换顺序,把第二个小的数放在前面,不断比较,直到形成一串由小到大排序的数字

时间复杂度:如果文件的初始状态是正序的 那么时间复杂度为O(n)

如果初始文件时反序的 那么时间复杂度是O(n的平方)

综上所述 冒泡排序总的平均时间复杂度为O(n的平方)

冒泡排序算法就是把小的元素往前调或者把大的元素往后调,比较相邻的两个元素的大小,交换也发生在这两个元素之间,所以如果两个元素相等,是不会再交换的,如果两个相等的元素没有相邻,那么即使通过前面的两两交换使两个元素相邻,这时也不会再交换,所以相同元素的前后顺序并没有改变,所以冒泡排序算法是一种稳定排序算法

测试代码如下

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test_13_1 : MonoBehaviour { void Start() { //测试数据 int[] array = { 1, 4, 2, 43, 5, 61, 89, 34, 67, 32, 40 }; //将数据排序 PopSort(array); //排序后的数据 for (int i = 0; i < array.Length; i++) { Debug.Log(array[i]); } } public void PopSort(int[] _item) { int i, j, temp; //先定义一下要用的变量 for (i = 0; i < _item.Length - 1; i++) { for (j = i + 1; j < _item.Length; j++) { if (_item[i] > _item[j]) //降序改为“<” { //交换两个数的位置 temp = _item[i]; //把大的数放在一个临时存储位置 _item[i] = _item[j]; //然后把小的数赋给前一个 _item[j] = temp; //然后把临时位置的那个大数赋给后一个 } } } } }

二、选择排序算法

选择排序算法是一种简单直观的排序算法

首先从待排序的数据元素中选出最小或者最大的一个元素,存放到序列的起始位置,其次再从剩余的未排序元素中寻找到最小或者最大的一个元素,然后放到已排序的序列的末尾,以此类推,直到待排序的数据元素的个数为0

选择排序算法是不稳定的排序方法、

选择排序算法总的平均时间复杂度为O(n的平方)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test_13_2 : MonoBehaviour { void Start() { //测试数据 int[] array = { 1, 4, 2, 43, 5, 61, 89, 34, 67, 32, 40 }; //将数据排序 SelectionSort(array); //排序后的数据 for (int i = 0; i < array.Length; i++) { Debug.Log(array[i]); } } public void SelectionSort(int[] _item) { int i, j, min, len = _item.Length; int temp; for (i = 0; i < len - 1; i++) { min = i; for (j = i + 1; j < len; j++) { if (_item[min].CompareTo(_item[j]) > 0) { min = j; } } temp = _item[min]; _item[min] = _item[i]; _item[i] = temp; } } }

三、插入排序算法

 插入排序是将一个记录插入已经排好序的有序表中,从而增加一个元素,有序表记录数+1,在其实现过程中,使用了双层循环,外层循环寻找第一个元素之外的所有元素,内层循环在当前有序表中根据当前元素进行插入位置查找,然后进行移动

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test_13_3 : MonoBehaviour { void Start() { //测试数据 int[] array = { 1, 4, 2, 43, 5, 61, 89, 34, 67, 32, 40 }; //将数据排序 InsertSort(array); //排序后的数据 for (int i = 0; i < array.Length; i++) { Debug.Log(array[i]); } } public void InsertSort(int[] _item) { for (int i = 1; i < _item.Length; i++) { int temp = _item[i]; for (int j = i - 1; j >= 0; j--) { if (_item[j] > temp) { _item[j + 1] = _item[j]; _item[j] = temp; } } } } }

创作不易 觉得有帮助请点赞关注收藏~~~

最后

以上就是朴实小熊猫最近收集整理的关于【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)一、冒泡排序算法二、选择排序算法三、插入排序算法的全部内容,更多相关【Unity内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(81)

评论列表共有 0 条评论

立即
投稿
返回
顶部