常用排序算法 常用排序算法一. 冒泡排序(BubbleSort)二. 选择排序(SelectionSort)三. 插入排序(Insertion Sort)待续。。。 一. 冒泡排序(BubbleSort)基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。过程:比较相邻的两个数据,如果第二个数小,就交换位置。从后向前两两比较,一直到比较最前两个数据。最终最小数被交换到起始的位置,这样第一个最小
一、冒泡排序冒泡排序(Bubble Sort)是一种比较简单的排序算法,它重复地走访过要排序的元素,依次比较相邻两个元素,如果它们的顺序错误就把它们调换过来,直到没有元素再需要交换,排序完成。冒泡排序的原理如下所示,数字表示的是数据序列原始的索引号:算法过程:比较相邻的元素,如果前一个比后一个大,就把它们两个对调位置;对排序数组中每一对相邻元素做同样的工作,直到全部完成,此时最后的元素将会是本轮排
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。2. 动图演示3. Python 代码实现def bubbleSort(arr): for i in range(1, len(arr)): for j in range(0, len(arr)-i): if arr[j] > arr[j+1]: arr[j], arr[j + 1] = arr[j + 1], arr[j
1、冒泡排序冒泡排序比较常见,面试很多都会问到这个算法,其原理比较简单,代码实现也很简单# 冒泡排序 # 先定一个一个需要排序的列表 l = [7,2,3,1,4,5,6,9,8] # 统计一下长度 n = len(l) ## 先遍历所有元素 for i in range(len(l)): ## 最后还剩多少个元素需要对比排序,因为本身自己不需要排序,所以-1,之前已经拍过多少个数字了,还
转载 2023-06-15 11:47:15
100阅读
算法优劣评判标准时间复杂度:定义:用来评估算法运行效率的一个式子print('Hello World') O(1) for i in range(n): print('Hello World') O(n) for i in range(n): for j in range(n): print('Hello World') O(n^2) for i in
转载 2023-07-07 20:01:42
37阅读
Date: 2019-08-16在面试中,排序算法是一个经常被问到的一个知识点,它的常用排序算法是:快速排序算法、归并排序算法、冒泡排序算法、插入排序算法、直接选择排序算法、希尔排序算法、堆排序和基数排序算法。其中前两种算法经常被要求现场撕代码实现,后面也容易被问到,同时也会经常被问到分析他们各自的时间复杂度、空间复杂度以及各自使用的场景!1. 快速排序算法:个人的理解是,根据基数(key,一般选
作者丨hustcc 排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:关于时间复杂度平方阶 (O(n2)) 排序 各类简单排序:
使用场景:1,空间复杂度 越低越好、n值较大:  堆排序  O(nlog2n)  O(1)2,无空间复杂度要求、n值较大:  桶排序  O(n+k)    O(n+k)   经典排序算法图解:经典排序算法的复杂度: 大类一(比较排序法):1、冒泡排序(Bubble Sort)【前后比较-交换】 python代码实现:1 d0 = [2, 15, 5
转载 2023-06-27 11:53:26
61阅读
十大经典排序算法python实现)知识站点时间复杂度1冒泡排序稳定性简介步骤可视化图代码实现2选择排序稳定性简介步骤可视化图代码实现3插入排序稳定性简介步骤可视化图代码实现4希尔排序稳定性简介可视化图代码实现5归并排序稳定性简介可视化图步骤代码实现6快速排序稳定性适用场景步骤可视化图代码实现 知识站点时间复杂度什么是时间复杂度呢?举个例子先让我们来想象一个场景:某一天,小黄和小蓝同时到一个公司
基本的魔法方法 __new__(cls[, ...]) new 是在一个对象实例化的时候所调用的第一个方法 它的第一个参数是这个类,其他的参数是用来直接传递给 init 方法 new 决定是否要使用该 init 方法,因为 new 可以调用其他类的构造方法或者直接返回别的实例对象来作为本类的实例,如果 new 没有返回实例对象,则 init 不会被调用 new 主要是用于继承一个不可变的类型比如一
两个基础知识点:递归和时间复杂度递归递归函数的特点:自己调用自己,有结束条件,看下面例子:def fun1(x): """无结束条件,报错""" print(x) fun1(x-1) def fun2(x): """结束条件为错误条件,报错""" if x>0: print(x) fun2(x+1) def fun3
上篇文章分享了一些入门算法题,如果没有看过的可以去看一下上一篇文章,这篇文章囊还是分享一些我精选的入门算法程序,废话不多说,上代码!""" 实心矩形 """ raw=int(input("请输入行数:")) for x in range(raw): print (" * "*x) """ 空心矩形 """ raw=int(input("请输入行数:")) for x in range(r
1. 字符串最后一个单词长度str = input("输入一串字符串:") strList = str.split(' ')[-1] print(len(strList)) 2. 计算某字符出现的次数str = input("请输入:").upper() nstr = input("请输入计算的字符:").upper() num = str.count(nstr)&n
转载 2023-06-21 22:02:51
249阅读
目录1 DP概述1.1 DP问题的特征1.2 DP的两种实现2 经典DP面试问题2.1 0/1背包问题(0/1 Knapsack Problem)2.2 最长公共子序列(Longest Common Subsequence,LCS)2.3 最长上升子序列(Longest Increasing Subsequence,LIS)2.4 编辑距离(Edit Distance)2.5 最小划分(Mini
  我们知道,动态规划用来解决一类最优化问题,通过将原问题分解成若干的子问题,并综合子问题的最优解从而得到原问题的最优解,线性DP就是这么一种现行的分析DP的思路。    我们这里来介绍几种常见的模型以及例题:  1.数字三角形模型   例题:898. 数字三角形 - AcWing题库   &nbs
请用python实现将一个二维数组转换成树结构例如:将下面数据[     ["a", "aa", "aaa", "aaaa"],     ["b", "bb", "bbb"],     ["a", "ab", "aba"],     ["a", "aa", "aab"] ] 转为: [     {         "name" : "a",         "child" : [         
转载 2020-05-26 18:49:05
2063阅读
如题,贪心算法隶属于提高算法效率的方法,也常与动态规划的思路相挂钩或一同出现。下面介绍几个经典贪心问题。(参考自刘汝佳著《算法竞赛入门经典》)。P.S.下文皆是我一个字一个字敲出来的,绝对“童叟无欺”,哈哈。(。⌒∇⌒) 耗费了我的很多时间,所以——希望对大家有帮助啊~ (=^‸^=)一、背包相关问题1.最优装载问题:给出N个物体,有一定重量。请选择尽量多的物体,使总重量不超过C。解法:只关心数量
      开篇的话:本文目的是收集和归纳力扣上的算法题,希望用python语言,竭我所能做到思路最清奇、代码最简洁、方法最广泛、性能最高效,了解常见题目,找到最利于记忆的答案,更加从容的应对面试。希望广思集益,共同进步。链表篇 237. 删除链表中的节点(难度系数✯)# Definition for singly-linked list. # class ListN
转载 2023-08-10 07:00:53
131阅读
我们知道学习一门语言最快的方法就是多敲代码,敲一些难度适中的代码可以让我们学的更快,理解的更深,有时候你看书看博客都不明白的一个概念可能你敲一会代码你就明白到底怎么回事了,下面是我精选的python入门的算法题,也有一些小程序,希望可以帮到你""" 题目:一行代码生成九九乘法表 """ print('\n'.join([' '.join(['%s*%s=%-2s' % (y, x, x*y) fo
1:求解最大连续子数组,A=[0,........,n-1],求A的连续子数组,使得该子数组和最大。(1):暴力搜索(时间复杂度O(n^3))#暴力搜索,三层循环,注意循环的起始变量 def MaxSubArray(A,n): res=[] MaxSum=A[0] for i in range(n): for j in range(i,n):
  • 1
  • 2
  • 3
  • 4
  • 5