首页
学习
活动
专区
圈层
工具
发布

for循环太Low?分享几段我工作中经常使用的for代码!

前言 不管是for循环还是while循环,都是任何一门语言的基础知识,同时也是非常重要的知识。借助于循环的策略,可以将很多重复性的问题完美地解决。...在Python中,大家可能对她的印象是“Python不适合使用循环,因为效率低,速度慢!”,但是本文中将重点介绍她,并跟大家分享我工作常用的几段代码示例(如果你想实操,文末有数据下载链接)。...for循环示意图 可以有部分朋友还不太清楚for循环的工作机制,这里画一个简单的示意图,希望读者能够理解她的逻辑。 ?...案例3:词频统计 如下图所示,这是一篇新闻报道,如何基于该报道完成词频统计的操作?由于实际工作中评论数据的分析会涉及到敏感信息,故这里用新闻报道代替,但下文中所介绍的代码核心部分基本类似。: ?...# 导入第三方模块 import jieba # 用于中文句子的切词 import collections # 用于词频的排序 # 读入新闻报道 fn = open('news.txt', encoding

1.2K20

for循环太Low?分享几段我工作中经常使用的for代码!

作者:刘顺祥 来源:数据分析1480 前言 不管是for循环还是while循环,都是任何一门语言的基础知识,同时也是非常重要的知识。借助于循环的策略,可以将很多重复性的问题完美地解决。...在Python中,大家可能对她的印象是“Python不适合使用循环,因为效率低,速度慢!”,但是本文中将重点介绍她,并跟大家分享我工作常用的几段代码示例(如果你想实操,文末有数据下载链接)。...for循环示意图 可以有部分朋友还不太清楚for循环的工作机制,这里画一个简单的示意图,希望读者能够理解她的逻辑。 ?...案例3:词频统计 如下图所示,这是一篇新闻报道,如何基于该报道完成词频统计的操作?由于实际工作中评论数据的分析会涉及到敏感信息,故这里用新闻报道代替,但下文中所介绍的代码核心部分基本类似。: ?...# 导入第三方模块 import jieba # 用于中文句子的切词 import collections # 用于词频的排序 # 读入新闻报道 fn = open('news.txt', encoding

1.2K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    react是如何实现冒泡的

    React 也支持这两种事件模型,很大可能你还没有使用过 React 的事件捕获,看下面的例子: 使用事件冒泡,如果点击按钮,childOnclick 会被触发,然后 parentOnclick 会被触发...一方面从历史沿革来看,在浏览器的早期,Netscape 浏览器是使用的 capture 事件模型,而 IE 使用的是冒泡模型,后来的标准里面就有了这两种模型可选: element.addEventListner...现在,大家从使用习惯上来讲,使用冒泡会比较多。addEventListner 的第 3 个参数 useCapture 的默认值也是 false....的方案,比如 react-lite,可能会存在bug的,上面的代码,在 react-lite 不能按照预期的方式冒泡。...,然后一个循环触发,如果循环中有 stopPropagation,那么终止循环 当然这都不是 react 的实际实现,因为 React 的代码太难读了,盘根错节,我还没有找到具体实现在哪里。

    2K20

    前言

    [1].从冒泡排序和快速排序引入算法 [2].时间复杂度的引入 [3].空间复杂度的引入 [4].数据结构和算法之间的杂谈 关于程序的执行 输入: 原生可用数据 = 数据获取 + 数据解析 处理:逻辑加工...(算法核心) 输出:获得预期数据 拿一个排序算法来说:[输入原始杂乱数据,通过逻辑加工,生成预期有序数据] ---- 一、从冒泡排序和快速排序开始说起 100W个随机数,存储到文件中,使用时解析数据形成...key; fastSort(arr, start, j - 1);//左半 fastSort(arr, j + 1, end);//右半 } ---- 3.数据输出(固化到文件) //使用冒泡排序...---- 5.关于排序算法 冒泡排序和使用快速 ?...信息.png CPU的主频:即CPU内核工作的时钟频率,例如我的笔记本是2.20GHz 频率(Hz):描述周期性循环信号(包括脉冲信号)在单位时间内所出现的脉冲数量 1GHz=1000MHz,1MHz

    47210

    开篇前言

    零、前言 [1].从冒泡排序和快速排序引入算法 [2].时间复杂度的引入 [3].空间复杂度的引入 [4].数据结构和算法之间的杂谈 关于程序的执行 输入: 原生可用数据 = 数据获取 + 数据解析 处理...:逻辑加工(算法核心) 输出:获得预期数据 拿一个排序算法来说:[输入原始杂乱数据,通过逻辑加工,生成预期有序数据] ---- 一、从冒泡排序和快速排序开始说起 100W个随机数,存储到文件中,使用时解析数据形成...key; fastSort(arr, start, j - 1);//左半 fastSort(arr, j + 1, end);//右半 } ---- 3.数据输出(固化到文件) //使用冒泡排序...---- 5.关于排序算法 冒泡排序和使用快速 ?...信息.png CPU的主频:即CPU内核工作的时钟频率,例如我的笔记本是2.20GHz 频率(Hz):描述周期性循环信号(包括脉冲信号)在单位时间内所出现的脉冲数量 1GHz=1000MHz,1MHz

    48220

    23.Python循环进阶教程:嵌套与控制

    循环嵌套的工作原理 当程序执行到嵌套循环时: 首先执行外层循环一次 然后执行内层循环的所有次数 再回到外层循环执行第二次 再次执行内层循环的所有次数 以此类推,直到外层循环结束 3....什么是冒泡排序? 冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,一次比较两个元素,如果顺序错误就交换它们。 2. 冒泡排序的原理 比较相邻的元素。...使用嵌套循环实现冒泡排序 def 冒泡排序(列表): 长度 = len(列表) # 外层循环控制排序轮数 for i in range(长度): # 内层循环进行相邻元素比较...冒泡排序的优化 def 优化冒泡排序(列表): 长度 = len(列表) # 外层循环控制排序轮数 for i in range(长度): 已排序 =...实用技巧 在大型循环中使用break可以提高程序效率,避免不必要的计算 在无限循环(while True)中,一定要有break语句作为退出条件 使用break前,确保已经完成了必要的清理工作 适当添加注释说明

    31310

    一半人写不出冒泡排序?现在我相信了

    不过在看这本书的时候,我有了一个可怕的发现,我虽然想得起来冒泡排序的原理,但上次写它已经是十几年前的事了…… 所以今天就和大家温故而知新,简单回忆复习一下选择排序、冒泡和插入排序这两个入门的排序算法。...这里已经三重循环了,复杂度达到了 O(n^3) ,超出了我们的预期,我们需要进行优化。怎么优化呢?我们不再是寻找合适的位置再插入,而是从末尾开始向前比对,如果新元素更小就和对比的数交换位置。...这样的话,我们就只需要两重循环就可以完成排序过程了。...冒泡排序的原理和插入排序其实非常类似。...而冒泡排序当中,有序的部分换到了i的右侧,我们每次循环一次,右侧有序的部分长度增加了1。 今天介绍的这三种排序算法都是 O(n^2) 的算法,大体上思路也比较直观和接近,属于比较初级的排序方法。

    35920

    Python实战之冒泡排序

    冒泡排序作为一种简单但有效的排序算法,是学习和理解Python编程的良好起点。本文将介绍如何使用 Python 语言实现冒泡排序,并通过示例和测试来展示其工作原理和效果。...3.1 具体的算法设计如下: 定义一个名为 bubble_sort 的函数,该函数接收一个整数列表作为输入参数。使用两层循环遍历列表,外层循环控制每一轮的比较,内层循环用于相邻元素的比较和交换。...在内层循环中,比较相邻的两个元素的大小,如果前者大于后者,则交换它们的位置。每完成一轮比较,最大的元素将会被冒泡到末尾,因此内层循环可以逐步减少遍历的范围。...3.2 代码实现: 下面是使用 Python 实现的冒泡排序算法: def bubble_sort(nums): for i in range(len(nums)): //使用for循环...在处理大规模数据时,冒泡排序可能会变得相对较慢。因此,对于大规模数据的排序,我们可以考虑使用其他更高效的排序算法,如快速排序或归并排序。

    29430

    C#冒泡排序算法

    遍历数列的工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。...冒泡排序的基本原理冒泡排序的基本思想是:比较相邻的元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。...冒泡排序的算法步骤比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。...然后,我们使用两层嵌套循环来实现冒泡排序算法。外层循环控制排序的总轮数,内层循环负责在每一轮中进行相邻元素的比较和交换。当内层循环完成时,最大的元素会被放置在数组的最后位置。...随着排序的进行,已经排序好的元素会被放置在数组的末尾,因此每进行一轮排序,内层循环的比较次数就会减少。冒泡排序的性能分析冒泡排序的平均和最坏情况时间复杂度都是O(n^2),其中n是数组的长度。

    3.5K00

    基础算法系列之排序算法-2.冒泡排序

    它将会是我们以后常用到的算法,所以学会它,用好它对我们以后学习高级算法是很有益处的,那让我们开始冒泡排序算法的学习吧。...---- 冒泡排序 冒泡排序,顾名思义,就像冒泡泡一样,不断将小的数往上"冒"(左移),大的数不断往下"坠落"(右移),最终得到一个一个有序的序列。它是一种简单的排序算法。...---- 冒泡排序的算法思想 通过两两比较相邻的数,如果发现这两个数不满足次序要求使,则将这两个数进行交换,从而实现"冒泡"。...是不是与预期的一样呢?!其实还有第二种实现冒泡排序的方法,就是你可以这样想,它既然是从最后一个数开始逐渐将小的数往上"冒",那我们可不可以从第一个数开始,逐渐将大的数往下"坠落"呢?...果然,和我们预期的一样,大家以后学习算法的时候也可以逆着想想,看看能不能达到一样的效果,这就是所谓的逆向思维嘛,既然我们已经学了冒泡排序算法,那让我们来做道题,试试手吧。

    45530

    为什么快速排序算法效率比较高?

    下面我们用数学方式来推导冒泡排序时间复杂度是如何计算的: 首先冒泡排序是基于比较和交换的,比如我们要对n个数字排序,冒泡排序需要n-1次遍历,比如我们有10个数字,第一趟循环需要比较9次,第二趟循环需要比较...这里使用递归处理,直到数组里面只剩1个元素就结束处理。...快速排序每次都会以2为低做裂变分解数组,所以最终推出来的渐近复杂度:Ο(nlog2n) 下面我们以随机生成1万个数字,分别用冒泡排序和快速排序来测试: 根据时间复杂度推算: 冒泡排序需要比较次数:1万的平方阶...结果符合预期,注意在n越大的情况下,冒泡排序的耗时越长,当量级达到千万级别冒泡排序可能需要半年的时间才能算出来,而快排则在几十秒左右。...,第一快排是不稳定的,比如数组原始顺序a=9,b=9,c=10,在快排排序完可能出现b,a,c,而冒泡排序则是稳定的,因为冒泡是相邻的两个元素比较,完全可以自己掌握需不需要交换,如果等于的时候,而快排则没法做到

    9.7K30

    巧借C++算法实现冒泡排序(旧题新说)

    然后使用两层嵌套循环,外层循环控制遍历的轮数,内层循环用于比较相邻元素并进行交换;接着在内层循环中,比较当前元素和下一个元素的大小关系,如果当前元素大于下一个元素,则交换它们的位置;紧接着在每完成一轮内层循环...,最大(或最小)的元素都会“冒泡”到序列的末尾(或开头);最后,外层循环重复执行,直到所有元素都排序完成。...所以,需要开发者在使用C++实现冒泡排序的时候需要留意优化,比较常见的优化方式有很多,比如通过设置标志位来判断是否发生交换,如果某一轮内层循环没有发生交换,则说明序列已经有序,可以提前结束排序过程,这样就大大节省了处理的流程步骤...而且应该大家也学到了冒泡排序是一种简单但有效的排序算法,尤其是它的原理,通过多次比较和交换相邻元素的方式实现序列的排序,经过学习冒泡排序算法,我们可以深入理解排序算法的工作原理,并在实际应用中灵活运用。...最后,大家在实际开发中使用冒泡排序的时候一定要结合实际情况,有所选择性来看,尤其是对于大规模数据的排序,我们也可以考虑其他更高效的排序算法来提升排序的速度和性能,也不是所有情况都适合使用冒泡排序的,切记

    41731

    【玩转Python】巧借Python实现冒泡排序

    目录前言基本概念冒泡排序规则使用Python实现冒泡排序拓展:冒泡排序的稳定性结束语前言如果你是计算机专业毕业的科班出身的毕业生,或者你是做软件开发工作,肯定对Python语言并不陌生,而且随着计算机科学技术的普及...那么本文就来分享一下基于Python实现冒泡排序的使用,冒泡排序是最经典的十大排序算法之一,它是最简单、最经典的,不仅基础而且重要,下面就来详细介绍一下冒泡排序的规则、Python代码的实现,并分享一些最优解以及优化思路...使用Python实现冒泡排序上面分享了冒泡排序的概念和规则,想必读者关于冒泡排序的理论知识都已经掌握了,那么接下来就来通过Python来实现冒泡排序这一经典的排序算法,下面就是使用Python语言实现冒泡排序的代码...所以为了提高在Python中使用冒泡排序的性能,个人觉得可以从下面几个点来进行优化,具体如下所示:1、设置标志位:如果在一次内层循环过程中没有发生元素交换,则说明该数组已经有序了,可以提前结束排序的流程过程...(外循环),无交换第五趟排序(外循环),无交换排序执行完毕,输出最终结果:1 2 4 5 6 7结束语通过本文关于使用Python来实现冒泡排序的操作,想必读者都已经掌握了,尤其是刚入门Python的开发者需要好好掌握

    58141

    【IT领域新生必看】从零开始掌握冒泡排序:IT小白的入门宝典

    通过多次遍历,较大的元素逐渐“冒泡”到列表的末端,最终实现排序。 冒泡排序的工作原理 冒泡排序通过以下步骤进行排序: 从列表的第一个元素开始,逐一比较相邻的两个元素。...) 在这个实现中,我们使用了两个嵌套的for循环。...外层循环控制遍历的次数,内层循环负责比较和交换相邻的元素。通过这种方式,列表中的元素逐渐变得有序。 冒泡排序的实现详解 初始化列表长度:首先,我们获取列表的长度n,以便在循环中使用。...外层循环:外层for循环从0到n-1,控制整个列表的遍历次数。每次遍历都会将当前未排序部分的最大元素移动到列表的末尾。 内层循环:内层for循环从0到n-i-1,逐一比较相邻的元素。...结论 冒泡排序作为最基础的排序算法之一,以其简单易懂的特点成为初学者 学习排序算法的首选。通过本篇文章,我们深入探讨了冒泡排序的工作原理、实现方法、优化策略和应用场景,并与其他常见排序算法进行了比较。

    19310

    巧借Java实现冒泡排序算法

    目录前言基本概念冒泡排序规则使用Java实现冒泡排序番外篇:冒泡排序的稳定性结束语前言如果你是计算机专业毕业的科班出身的毕业生,或者你是做软件开发工作,肯定对Java开发并不陌生,Java语言是程序圈经久不衰的经典编程语言...使用Java实现冒泡排序上面分享了冒泡排序的概念和规则,想必读者关于冒泡排序的理论知识都已经掌握了,那么接下来就来通过Java来实现冒泡排序这一经典的排序算法,下面就是使用Java语言实现冒泡排序的代码...语言通过使用两层嵌套循环实现了冒泡排序,其中,外层循环控制进行n-1次比较和交换的轮数,内层循环用于比较相邻元素并执行交换操作,所以是两层循环使用。...所以为了提高在Java中使用冒泡排序的性能,个人觉得可以从下面几个点来进行优化,具体如下所示:1、设置标志位:如果在一次内层循环过程中没有发生元素交换,则说明该数组已经有序了,可以提前结束排序的流程过程...(外循环),无交换第五趟排序(外循环),无交换排序执行完毕,输出最终结果:1 2 4 5 6 7结束语通过本文关于使用Java来实现冒泡排序的操作,想必读者都已经掌握了吧,尤其是刚入门Java的开发者需要好好掌握

    47941

    图解C语言冒泡排序算法,含代码分析

    冒泡排序算法的原理 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。...{12, 43, 23, 13, 65, 17, 98, 45, 67, 88}; len = (int)sizeof(data) / sizeof(*data); printf("使用冒泡排序前的原始数据是...printf("%3d", data[i]); } printf("\n"); result = bubble_sort(data, len); printf("使用冒泡排序后的数据是...{ printf("%3d", arr[k]); } printf("\n"); } return arr; } 运行结果 使用冒泡排序前的原始数据是...98 使用冒泡排序后的数据是: 12 13 17 23 43 45 65 67 88 98 图解冒泡排序 使用冒泡排序前的原始数据是:12 43 23 13 65 17 98 45 67 88 在这里只分析下一次循环的过程

    67520

    数据结构|冒泡排序与选择排序

    冒泡排序 排序算法可以说是算法中使用的比较频繁的,冒泡排序是一种简单的排序,它通过遍历,一次比较两个元素,如果排序错误就交换位置,遍历需要重复进行直到不再需要交换,才算排序完成。...冒泡排序的思路如下: 1.比较相邻的元素,如果前一个比后一个大(升序,降序则相反),就交换这两个元素的位置。 2.对每一对相邻元素做同样的工作,从开始第一对到结尾最后一对。...时间复杂度:O(n^2) 代码实现 冒泡排序的代码实现并不难,对于初学者来说只需要注意循环次数这个坑就行。...不难发现,冒泡排序的代码实现需要两层循环才能实现。...从这个意义上讲,交换排序的性能略优于冒泡排序。而且,交换排序比冒泡排序的思想更加直观。

    56820

    Swift 冒泡排序及优化

    冒泡排序是大家都常用的排序方法 冒泡排序算法的运作如下:(从后往前) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。...冒泡排序是稳定的排序算法 时间复杂度 冒泡排序的最佳时间复杂度为O(n),即初始状态就是排好序的。 冒泡排序的最坏时间复杂复杂度为O(n2),即初始状态就是逆序的。...冒泡排序的平均时间复杂复杂度为O(n2) 根据这个原理代码如下: //冒泡排序 func bubbleSort(_ nums: inout [Int]) { let n...= 0 //swap变量用来标记循环里最后一次交换的位置 var k = n - 1 //内循环判断条件 for _ in 0.....内层循环次数比较 根据结果可以发现,内层的循环减少的次数还是很多的。

    1.2K20

    冒泡排序

    走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。...对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。...冒泡排序的分析 冒泡排序的算法时间分析 比较和交换需要一个以常量为界的时间,我们称之为c。 (标准)Bubble Sort中有两个嵌套循环。 外循环正好运行N次迭代。...冒泡排序什么时候最慢: 当输入的数据是反序时(写一个 for 循环反序输出数据不就行了,干嘛要用你冒泡排序呢,我是闲的吗)。...冒泡排序的实例分析 以数组 arr = [5, 1, 4, 2, 8] 为例说明,加粗的数字表示每次循环要比较的两个数字: 第一次外循环 ( 5 1 4 2 8 ) → ( 1 5 4 2 8 ), 5

    62120
    领券