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

这篇具有很好参考价值的文章主要介绍了初阶算法(1):通过简单的排序算法来认识时间复杂度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录 

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

  第二章   初阶算法(2):进行详细地介绍插入排序的细节和时间复杂度

  第三章   初阶算法(3):二分法的讲解与实现(C语言),以及二分不止光在有序数组中的应用 


目录

系列文章目录

前言

一、时间复杂度是什么?

常数时间的操作:

时间复杂度:

排序:

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

总结


前言

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

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


一、时间复杂度是什么?

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

1.1 常数时间的操作:

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

下面是一些例子:

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

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

1.2 时间复杂度:

1.2.1 排序:

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

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

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

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

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)用一个数据量很大的样本去跑,看那个时间少。常数操作固定的时间也有差距。

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

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


总结

       以上就是今天要讲的内容,本文仅仅简单介绍了时间复杂度和额外空间复杂度。希望大家看完以后,进行点评,谢谢大家!文章来源地址https://www.toymoban.com/news/detail-657554.html

到了这里,关于初阶算法(1):通过简单的排序算法来认识时间复杂度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 八大排序算法(含时间复杂度、空间复杂度、算法稳定性)

    下列算法默认都是对数组进行升序 1.1、算法思想 插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 插入排序的具体步骤如下: 从第一个元素开始,该元素可以认为已经被排序;

    2024年02月08日
    浏览(47)
  • 常见的排序算法的时间复杂度

    排序算法的时间复杂度通常取决于输入数据的规模(通常表示为n)。以下是一些常见排序算法及其平均、最好和最坏情况下的时间复杂度: 1、冒泡排序(Bubble Sort) 平均时间复杂度:O(n^2) 最好情况时间复杂度:O(n) 最坏情况时间复杂度:O(n^2) 冒泡排序通过重复地遍历待排序

    2024年04月13日
    浏览(35)
  • 常见的排序算法及时间空间复杂度

    排序算法是计算机科学中的基本算法之一,它用于将一组数据按照某种顺序进行排列。下面是一些常见的排序算法,以及它们的思想和时间空间复杂度,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 冒泡排序 (Bubble Sort) - 思

    2024年02月07日
    浏览(43)
  • 排序算法的时间复杂度存在下界问题

    对于几种常用的排序算法,无论是归并排序、快速排序、以及更加常见的冒泡排序等,这些排序算法的时间复杂度都是大于等于O(n*lg(n))的,而这些排序算法存在一个共同的行为,那就是这些算法在对元素进行排序的时候,都会进行同一个操作,也就是对数组中取出文件,然后

    2024年02月21日
    浏览(45)
  • 快速排序算法详解(原理,时间复杂度,实现代码)

    快速排序算法详解(原理、实现和时间复杂度) 快速排序是对冒泡排序的一种改进,由 C.A.R.Hoare(Charles Antony Richard Hoare,东尼·霍尔)在 1962 年提出。 快速排序的基本思想是 :通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据

    2024年02月13日
    浏览(51)
  • 时间复杂度为 O(nlogn) 的排序算法

    归并排序 归并排序遵循 分治 的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后合并这些子问题的解来建立原问题的解,归并排序的步骤如下: 划分 :分解待排序的 n 个元素的序列成各具 n/2 个元素的两个子序列,将长数组的排序

    2024年02月07日
    浏览(35)
  • 时间复杂度为 O(n) 的排序算法

    大家好,我是 方圆 。本文介绍线性排序,即时间复杂度为 O(n) 的排序算法,包括桶排序,计数排序和基数排序,它们都不是基于比较的排序算法,大家重点关注一下这些算法的适用场景。 桶排序 桶排序是分治策略的一个典型应用。它通过设置一些具有大小顺序的桶,每个桶

    2024年02月21日
    浏览(45)
  • 时间复杂度为 O(n^2) 的排序算法

    大家好,我是 方圆 。对于小规模数据,我们可以选用时间复杂度为 O(n 2 ) 的排序算法,因为时间复杂度并不代表实际代码的执行时间,而且它也省去了低阶、系数和常数,仅代表的增长趋势,所以在小规模数据情况下, O(n 2 ) 的排序算法可能会比 O(nlogn) 的排序算法执行效率

    2024年02月07日
    浏览(49)
  • 时间复杂度接近O(n)的三种排序算法

    桶排序,顾名思义,会用到“桶”,核心思想是将要排序的数据分到几个有 序的桶里,每个桶内的数据再单独进行排序。桶内排完序之后,再把每个桶内的数据按照顺序依次 取出,组成的序列就是有序的了。 桶排序对要排序数据的要求是非常苛刻的。 首先,要排序的数据需

    2024年02月14日
    浏览(45)
  • 排序算法大全集,从时间复杂度和空间复杂度上对各个排序算法进一步的分析和评估,从插入排序、交换排序、归并排序、基数排序到外部排序,通晓堆排序、希尔排序、快速排序等算法

    目录 1.基本概念和排序方法概述 排序方法的分类 2.插入排序 1.直接插入排序 2.折半插入排序 3.希尔排序 3.交换排序 1.冒泡排序 2.快速排序 3.简单选择排序 4.堆排序 4.归并排序 5.基数排序 6.外部排序 7.各类排序方法的综合比较 1.时间性能 2.空间性能 3.排序方法的稳定性能 4.关于

    2024年02月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包