【21天算法学习】直接选择排序

简介: 【21天算法学习】直接选择排序

作者简介:

🍀姓姜,字君竹。

🍁浅薄观点:科以载文,文以载道

🌱软件技术升计科,计划考研

🌾要有最朴素的生活和最遥远的梦想,即使明日,天寒地冻,路遥马亡


1.概念及介绍

 直接选择排序也是一种简单的排序方法,它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,…,第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,…,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。


2.时间空间复杂度

 在直接选择排序中,共需要进行n-1次选择和交换,每次选择需要进行n - i次比较 (1 <= i <= n-1),而每次交换最多需要3次移动,因此,总的比较次数C = (n*n - n)/2;

 总的移动次数3(n-1),由此可知,直接选择排序的时间复杂度为 O(n2) ,所以当记录占用字节数较多时,通常比直接插入排序的执行速度快些;

 对于空间复杂度来说,简单选择排序仅需一个存储空间用于记录交换的暂存单元,即空间复杂度为 O(1);

 由于在直接选择排序中存在着不相邻元素之间的互换,因此,直接选择排序是一种不稳定的排序方法。


3.图解


de46ddb0a4a249968c943aede840e3dc.png

  1. 代码实现
int main() {
  int a[] = { 22,45,21,23,54,76,8,67,67 };
  int sz = sizeof(a) / sizeof(a[0]);
  int i = 0;
  for(i = 0; i < sz - 1; i++){
    int k = i;
    int j = 0;
    for (j = i + 1; j < sz; j++) {
      if (a[j] < a[k]) {
        k = j;
      }
    }
    if (k != i) {
      int tmp = a[i];
      a[i] = a[k];
      a[k] = tmp;
    }
  }
  for (i = 0; i < sz; i++) {
    printf("%d ", a[i]);
  }
  return 0;
}



学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

目录
相关文章
|
3天前
|
搜索推荐 算法 Java
Java数据结构与算法:排序算法之选择排序
Java数据结构与算法:排序算法之选择排序
|
13天前
|
存储 算法 Go
算法学习:数组 vs 链表
算法学习:数组 vs 链表
17 0
|
17天前
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】43. 算法优化之Adam算法【RMSProp算法与动量法的结合】介绍及其Pytorch实现
【从零开始学习深度学习】43. 算法优化之Adam算法【RMSProp算法与动量法的结合】介绍及其Pytorch实现
|
17天前
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】40. 算法优化之AdaGrad算法介绍及其Pytorch实现
【从零开始学习深度学习】40. 算法优化之AdaGrad算法介绍及其Pytorch实现
|
17天前
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】38. Pytorch实战案例:梯度下降、随机梯度下降、小批量随机梯度下降3种优化算法对比【含数据集与源码】
【从零开始学习深度学习】38. Pytorch实战案例:梯度下降、随机梯度下降、小批量随机梯度下降3种优化算法对比【含数据集与源码】
|
9天前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
|
13天前
|
搜索推荐
排序算法---选择排序-----详解&&代码
排序算法---选择排序-----详解&&代码
|
13天前
|
算法 搜索推荐 JavaScript
算法学习:快速排序
算法学习:快速排序
13 1
|
19天前
|
算法 搜索推荐
数据结构与算法-选择排序
数据结构与算法-选择排序
13 4
|
2天前
|
算法 Java
《JVM由浅入深学习【八】 2024-01-12》JVM由简入深学习提升分(JVM的垃圾回收算法)
《JVM由浅入深学习【八】 2024-01-12》JVM由简入深学习提升分(JVM的垃圾回收算法)
5 0