算法原理就不用过多介绍了,直接上代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sort : MonoBehaviour
{
List<int> nums = new List<int> { 2, 6, 7, 1, 45, 23, 14, 64, 22 };
// Start is called before the first frame update
void Start()
{
//MaoPaoSort(nums);
//XuanZeSort(nums);
//ChaRuSort(nums);
//QuickSort(nums, 0, nums.Count-1);
/*foreach (var item in nums)
{
Debug.Log(item);
}*/
}
//快速排序
void QuickSort(List<int> lists,int low,int high)
{
if (low<high)
{
int index = GetIndex(lists, low, high);
QuickSort(lists, low, index-1);
QuickSort(lists, index+1, high);
}
}
int GetIndex(List<int> lists, int low, int high)
{
int t = lists[low];
while (low < high)
{
while (low < high && lists[high] > t)
{
high--;
}
lists[low] = lists[high];
while (low < high && lists[low] < t)
{
low++;
}
lists[high] = lists[low];
}
lists[low]=t;
return low;
}
//插入排序
void ChaRuSort(List<int> lists)
{
for (int i = 1; i < lists.Count; i++)
{
int t = lists[i];
int j = i - 1;
while (j>=0&&lists[j]>t)
{
lists[j + 1] = lists[j];
j--;
}
lists[j + 1] = t;
}
}
//选择排序
void XuanZeSort(List<int> lists)
{
for (int i = 0; i < lists.Count-1; i++)
{
int t=i;
for (int j = i+1; j < lists.Count; j++)
{
if (lists[t]>lists[j])
{
t = j;
}
}
int temp = lists[i];
lists[i] = lists[t];
lists[t] = temp;
}
}
//冒泡排序
void MaoPaoSort(List<int> lists)
{
for (int i = 0; i < lists.Count - 1; i++)
{
for (int j = 0; j < lists.Count - i - 1; j++)
{
if (lists[j] > lists[j + 1])
{
int t = lists[j];
lists[j] = lists[j + 1];
lists[j + 1] = t;
}
}
}
}
}