初阶算法(1):通过简单的排序算法来认识时间复杂度

简介: 初阶算法(1):通过简单的排序算法来认识时间复杂度

前言

      总所周知,算法是程序员必须要学习的一项内容,而小编是个菜鸟,所以将笨鸟先飞,在这一系列,我会将我学习算法的亲身经历描写下来,将所学内容都记录下来,希望看到这篇文章的小伙伴一起加油!


      在网上进行搜索算法学习,有一个大佬(英雄哪里来)也是先从排序入手,我也会进行适当的借鉴大佬的笔记。


一、时间复杂度是什么?

      在认识时间复杂度之前,我们先引出一个知识:常数时间的操作。


1.1 常数时间的操作:

      我们在写代码的时候会写一些指令,这些指令与数据量无关,是一个固定时间的操作,这就是常数时间的操作。


下面是一些例子:


      一些表达式操作,数组寻址,从数组中取一个数等等。


      在认识完常数时间的操作后,我们来通过排序进行认识时间复杂度。


1.2 时间复杂度:

1.2.1 排序:

      首先,先来讲解选择排序算法。选择排序应该是最简单的排序了,下面是一个动图,(是借鉴英雄哪里来大佬的)。(英雄从哪里来)

微信截图_20230911222345.png

  在计算时间复杂度时,一般是考虑最坏步骤(所有步骤都进行。在选择排序中,

微信截图_20230911222307.png

int main()
{
  int n = 0;
  scanf("%d", &n);
  int arr[10000];
  int minIndex = 0;
  int temp = 0;
  for (int i = 0; i < n; i++)
  {
    scanf("%d", &arr[i]);
  }
  for (int i = 0; i < n; i++)
  {
        minIndex = i;
    for (int j = i + 1; j < n; j++)
    {
      if (arr[minIndex] > arr[j])
      {
        minIndex = j;
      }
    }
    temp = arr[i];
    arr[i] = arr[minIndex];
    arr[minIndex] = temp;
  }
  for (int i = 0; i < n; i++)
  {
    printf("%d ", arr[i]);
  }
  printf("\n");
  return 0;
}

判断一个算法的时间好坏,(1)先看两者的时间复杂度的指标:如果说两个算法流程的时间复杂度相同,则(2)用一个数据量很大的样本去跑,看那个时间少。常数操作固定的时间也有差距。


二、额外空间复杂度是什么?

      额外空间复杂度是流程在执行过程中额外申请的空间大小。


总结

      以上就是今天要讲的内容,本文仅仅简单介绍了时间复杂度和额外空间复杂度。希望大家看完以后,进行点评,谢谢大家!


相关文章
|
3月前
|
机器学习/深度学习 缓存 算法
Python算法设计中的时间复杂度与空间复杂度,你真的理解对了吗?
【10月更文挑战第4天】在Python编程中,算法的设计与优化至关重要,尤其在数据处理、科学计算及机器学习领域。本文探讨了评估算法性能的核心指标——时间复杂度和空间复杂度。通过详细解释两者的概念,并提供快速排序和字符串反转的示例代码,帮助读者深入理解这些概念。同时,文章还讨论了如何在实际应用中平衡时间和空间复杂度,以实现最优性能。
88 6
|
5月前
|
机器学习/深度学习 算法 程序员
读《趣学算法》:重开算法之门,时间复杂度与空间复杂度
本文是作者阅读《趣学算法》后的笔记,介绍了算法复杂度的基本概念,包括时间复杂度和空间复杂度的不同阶表示,并通过具体例子展示了如何计算和理解算法的效率。
74 2
读《趣学算法》:重开算法之门,时间复杂度与空间复杂度
|
3月前
|
搜索推荐 算法
插入排序算法的平均时间复杂度解析
【10月更文挑战第12天】 插入排序是一种简单直观的排序算法,通过不断将未排序元素插入到已排序部分的合适位置来完成排序。其平均时间复杂度为$O(n^2)$,适用于小规模或部分有序的数据。尽管效率不高,但在特定场景下仍具优势。
|
3月前
|
机器学习/深度学习 存储 缓存
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
文章主要介绍了排序算法的分类、时间复杂度的概念和计算方法,以及常见的时间复杂度级别,并简单提及了空间复杂度。
56 1
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
|
3月前
|
搜索推荐 算法
数据结构与算法学习十四:常用排序算法总结和对比
关于常用排序算法的总结和对比,包括稳定性、内排序、外排序、时间复杂度和空间复杂度等术语的解释。
39 0
数据结构与算法学习十四:常用排序算法总结和对比
|
3月前
|
存储 算法
算法的时间复杂度和空间复杂度
本文详细讨论了算法的时间复杂度和空间复杂度,包括它们的概念、计算方法和常见复杂度的对比,并通过多个实例解释了如何计算算法的时间和空间复杂度。
231 0
算法的时间复杂度和空间复杂度
|
4月前
|
算法 Python
震惊!Python 算法设计背后,时间复杂度与空间复杂度的惊天秘密大起底!
在 Python 算法设计中,理解并巧妙运用时间复杂度和空间复杂度的知识,是实现高效、优雅代码的必经之路。通过不断地实践和优化,我们能够在这两个因素之间找到最佳的平衡点,创造出性能卓越的程序。
47 4
|
3月前
|
机器学习/深度学习 搜索推荐 算法
探索数据结构:初入算法之经典排序算法
探索数据结构:初入算法之经典排序算法
|
3月前
|
算法 C语言
深入理解算法效率:时间复杂度与空间复杂度
深入理解算法效率:时间复杂度与空间复杂度
|
5月前
|
机器学习/深度学习 存储 算法
算法时间复杂度分析
这篇文章讲解了如何分析算法的时间复杂度,包括关注循环执行次数最多的代码段、总复杂度的确定、嵌套代码复杂度的计算方法,并提供了大O阶的推导步骤和常见时间复杂度的列表,同时还介绍了空间复杂度的概念及其重要性。

热门文章

最新文章