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

概述

一、冒泡排序算法

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

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

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

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

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

测试代码如下

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的平方)

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,在其实现过程中,使用了双层循环,外层循环寻找第一个元素之外的所有元素,内层循环在当前有序表中根据当前元素进行插入位置查找,然后进行移动

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 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)一、冒泡排序算法二、选择排序算法三、插入排序算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部