【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)

简介: 【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;
                }
            }
        }
    }
}

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

相关文章
|
2月前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
139 67
|
7天前
|
存储 监控 算法
企业内网监控系统中基于哈希表的 C# 算法解析
在企业内网监控系统中,哈希表作为一种高效的数据结构,能够快速处理大量网络连接和用户操作记录,确保网络安全与效率。通过C#代码示例展示了如何使用哈希表存储和管理用户的登录时间、访问IP及操作行为等信息,实现快速的查找、插入和删除操作。哈希表的应用显著提升了系统的实时性和准确性,尽管存在哈希冲突等问题,但通过合理设计哈希函数和冲突解决策略,可以确保系统稳定运行,为企业提供有力的安全保障。
|
2月前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
68 4
|
3月前
|
搜索推荐
冒泡排序算法
【10月更文挑战第19天】冒泡排序是一种基础的排序算法,虽然在实际应用中可能不是最优的选择,但对于理解排序算法的基本原理和过程具有重要意义。
|
2月前
|
算法 C#
C#常见的四种经典查找算法
C#常见的四种经典查找算法
|
2月前
|
算法 C# 索引
C#线性查找算法
C#线性查找算法!
|
3月前
|
存储 算法 C#
C#哈希查找算法
C#哈希查找算法
|
3月前
|
算法 C# 索引
C#二分查找算法
C#二分查找算法
|
3月前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
25 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
3月前
|
搜索推荐 算法 数据可视化
深入解析冒泡排序算法
深入解析冒泡排序算法
52 4