🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
排序算法是一种将一组数据按照特定的规则进行排列的方法。排序算法通常用于对数据的处理,使得数据能够更容易地被查找、比较和分析。
下面是常见的11种排序算法:
简单插入排序基本思想是将待排序的元素插入到已排序的序列中,保持已排序序列的有序性。具体步骤如下:
简单插入排序的时间复杂度为O(n^2),空间复杂度为O(1)。由于其基本思想简单易懂、代码实现简单,并且对于小规模数据排序效果良好,因此被广泛应用。
简单插入排序的时间复杂度为O(n^2),其中n为序列中元素的个数。具体分析如下:
最好情况下,当序列已经有序时,每个元素只需要比较一次,不需要移动位置,时间复杂度为O(n)。
最坏情况下,当序列逆序时,每个元素都需要和前面的元素比较,并且每次比较都需要移动位置,时间复杂度为O(n^2)。
平均情况下,假设序列中任意两个元素的比较概率相等,那么平均比较次数为n/2,平均移动次数也为n/2,因此时间复杂度为O(n^2)。
简单插入排序的时间复杂度为O(n^2),不论最好、最坏、还是平均情况下都如此,它在大规模数据排序时效率较低,但是对于小规模数据或者部分有序的数据,插入排序是一种不错的选择。
简单插入排序适用于以下应用场景:
简单插入排序适用于对数据量较小、或者部分有序的数据进行排序的场景。
/// <summary>
/// 简单插入排序
/// </summary>
public class Program {
public static void Main(string[] args) {
int[] array = { 43, 69, 11, 72, 28, 21, 56, 80, 48, 94, 32, 8 };
StraightInsertionSort(array);
ShowSord(array);
Console.ReadKey();
}
private static void ShowSord(int[] array) {
foreach (var num in array) {
Console.Write($"{num} ");
}
Console.WriteLine();
}
public static void StraightInsertionSort(int[] array) {
for (int i = 1; i < array.Length; i++) {
int sentinel = array[i];
int j = i - 1;
while (j >= 0 && sentinel < array[j]) {
array[j + 1] = array[j];
j--;
}
array[j + 1] = sentinel;
}
}
}