🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
排序算法是一种将一组数据按照特定的规则进行排列的方法。排序算法通常用于对数据的处理,使得数据能够更容易地被查找、比较和分析。
下面是常见的11种排序算法:
选择排序的基本思想是:在未排序的序列中,找到最小的元素,将其放置在序列的起始位置;然后从剩余未排序的元素中,继续找到最小的元素,放置在已排序序列的末尾;以此类推,直到所有元素都排完为止。这个过程可以看作是不断选择剩余元素中的最小值,将其放置在已排序序列的末尾的过程。这个过程类似于打牌时从一堆牌中选择最小的牌放到手中的牌堆里,然后再从剩余的牌中选择最小的牌放到手中的牌堆的末尾,直到所有牌都被选完为止。
选择排序的时间复杂度为$O(n^2)$,空间复杂度为$O(1)$。具体分析如下:
在选择排序过程中,需要找出剩余元素中的最小值,并将其放到已排序部分的末尾。假设待排序的数组长度为n,则第一次找最小值需要比较n-1次,第二次找最小值需要比较n-2次,以此类推,总的比较次数为:
$$(n-1)+(n-2)+\cdots+2+1=\frac{n(n-1)}{2}$$
因此,比较的时间复杂度为$O(n^2)$。
在选择排序过程中,只需要在原数组中进行元素的交换操作,不需要创建新的数组或者其他数据结构来保存中间结果,因此空间复杂度为$O(1)$。
选择排序的时间复杂度为$O(n^2)$,空间复杂度为$O(1)$。
选择排序适用于数据量较小、内存消耗较少的情况,不建议用于大规模数据排序。以下是选择排序的几个应用场景:
/// <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 };
SelectionSort(array);
ShowSord(array);
Console.ReadKey();
}
private static void ShowSord(int[] array) {
foreach(var num in array) {
Console.Write($"{num} ");
}
Console.WriteLine();
}
public static void SelectionSort(int[] array) {
int swap;
int pos = 0;
for(int i = 0; i < array.Length - 1; i++) {
pos = i;
for(int j = i + 1; j < array.Length; j++) {
if(array[j] < array[pos]) {
pos = j;
}
}
swap = array[pos];
array[pos] = array[i];
array[i] = swap;
}
}
}