一、冒泡排序算法
冒泡排序算法是程序设计中一种较简单的排序算法,其原理是重复的对要排序的数进行大小比较,一次比较两个元素,如果第一个数比第二个数大,则交换顺序,把第二个小的数放在前面,不断比较,直到形成一串由小到大排序的数字
时间复杂度:如果文件的初始状态是正序的 那么时间复杂度为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; } } } } }
创作不易 觉得有帮助请点赞关注收藏~~~