第二章 :查找与排序-------递归形式进行插入排序

《算法导论》第二章-第1节_练习(参考答案) 算法导论(第三版)参考答案:练习2.1-1,练习2.1-2,练习2.1-3,练习2.1-4 阅读详情

1、切蛋糕思维:

求阶乘: f(n)=n*f(n-1);

打印i-j:p(i,j)=p(i)->p(i+1,j);

数组求和:

翻转字符串

2、划不开,有没有递推公式?有没有等价转换?

斐波那契数列 f(n)=f(n-1)+f(n-2)

最大公约数f(m,n)=f(n,m%n)

插入排序改递归

汉诺塔

 

递归形式进行插入排序:

 

#include<iostream>
using namespace std;
/*
**找重复
**找变化
**找边界
*/

void insertSort(int arr[],int k){  //k:下标 

	if(k==0) return;
	//对前k-1个元素进行排序 
	insertSort(arr,k-1);
	//把位置k的元素插入到前面的部分
	int x=arr[k];
	int index=k-1;
	while((index>-1)&&(x<arr[index])){
		arr[index+1]=arr[index];
		index--;
	} 
	arr[index+1]=x;
}
int main(){
	int a[]={1,5,2,7,3,1};
	insertSort(a,5);
	for(int i=0;i<6;i++){
		cout<<a[i]<<" ";
	}
	return 0;
}

 

结果:

 

小结:

找重复:

    1、找到一种划分方法

    2、找到递推公式或者等价转换

    都是父问题转化为求解子问题

找变化的量:

    变化的量通常要作为参数

找出出口

【算法导论】第2章 算法基础 在最坏情况下,二分查找的时间复杂度为nlgn,但元素的移动次数未改变,它依赖于待排序表的初始状态,因此总运行时间不能改进到O(nlgn),仍然为O(n^2)。n/k个子表共需:n/k(ak^2 + bk + c) = ank + bn + nc/k = O(nk);c. O(nk + nlgn/k) = O(nlgn),即k 阅读详情

相关推荐

最全的2021蓝桥杯算法课《算法很美》的学习笔记总目录+真题详解

本系列是对最全的2021蓝桥杯算法课《算法很美》的笔记总结和归纳 学习视频:算法很美 第一章 1.1课程介绍

m0_51456787的博客 1万+

插入排序详解及递归实现

文章目录一、概念及说明二、适用说明1.时间复杂度2.空间复杂度3.算法特点4.算法动画展示三、双循环实现代码演示四、递归实现代码演示 一、概念及说明 原理:通过构建有序数列,把未排列数据,通过扫描,插入到有序数列的合适位置 插入排序的基本思想:每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置上,直到所有的待排序记录全部插入为止。 二、适用说明 1.时间复杂度 当待排序数组是有序时,是最优的情况,只需当前数跟前一个数比较一下就可以了,这时一共需要比较 N-1 次,时间复杂度为.

weixin_51363326的博客 5644

【网络安全】Centos7安装杀毒软件----ClamAV

Clam AntiVirus是一个Linux系统上使用的反病毒软件包。主要应用于邮件服务器,采用多线程后台操作,可以自动升级病毒库。

你在看屏幕的同时,屏幕也在注视着你 8828

常用的排序算法以及实现

如何分析一个“排序算法”? 排序算法的执行效率 1.最好情况、最坏情况、平均情况时间复杂度 2.时间复杂度的系数、常数 、低阶 3.比较次数和交换(或移动)次数 排序算法的内存消耗 算法的内存消耗可以通过空间复杂度来衡量,排序算法也不例外。原地排序算法,就是特指空间复杂度是O(1)的排序算法 排序算法的稳定性 经过某种排序算法排序之后,如果两个相等的数前后顺序没有改变,那我们就把这种排序算法叫作稳定的排序算法;如果前后顺序发生变化,那对应的排序...

Hy_2267的博客 962

FPGA赋能:从加权灰度均值到快速收敛的自动曝光实战

本文深入探讨了FPGA在工业视觉自动曝光算法中的应用,重点介绍了加权灰度均值法的优化实现与快速收敛策略。通过硬件友好的算法改造和流水线架构设计,FPGA方案能在1帧内完成曝光调整,显著提升处理速度和能效比,适用于复杂光照条件下的工业检测场景。

weixin_29306317的博客 82

ThinkPHP+Layui开发的ERP管理系统

ERP采购生产销售系统,一款基于ThinkPHP+Layui开发的ERP管理系统,帮助中小企业实现ERP管理规范化,此系统能为你解决五大方面的经营问题:1.采购管理 2.销售管理 3.仓库管理 4.资金管理 5.生产管理,适用于:服装鞋帽、化妆品、机械机电、家具装潢、建材行业、快销品、母婴用品、办公用品、汽配汽修、生鲜农贸、手机通讯、数码家电、医药用品、制造业、信息技术服务行业等。提供全部无加密服务端和前端源代码,独立部署,不受限制。

u011092458的博客 788

递归之插入排序

import java.util.Arrays; public class 递归之插入排序 { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = {6,2,8,5,1}; insertsort(arr,arr.length-1); System.out.println(Arrays.toString(arr)); } .

weixin_54401017的博客 1016

深入探讨:StoreKit 2的交易处理与收据验证

iOS应用开发中,StoreKit 2带来收据处理和交易验证的新变化。本文通过实例分析,对比传统StoreKit与StoreKit 2的差异,指出直接访问sandboxReceipt文件可能引发错误。解决方案是使用Transaction对象和SKReceiptRefreshRequest,详细介绍了如何初始化ReceiptLoader、处理交易更新及验证收据的完整流程,帮助开发者适应新框架,确保购买流程安全可靠。

m0_74337424的博客 357

插入排序的递归实现与分析---算法导论2.3-4

递归实现的思路: 把插入排序表示为如下的一个递归过程:为了排序A[1…n],我们递归的排序A[1…n-1],然后把A[n]插入到A[1…n-1]中。 c语言实现: #include <stdio.h> #include <stdlib.h> void insert(int *arrayA,int num) { int i=num-1; int key = ...

李的博客 5442

华为OD机试新系统真题【迷宫相遇】

华为OD机试 新系统真题【迷宫相遇】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【迷宫相遇】多语言题解。

qq_45776114的博客 770

第二章--查找与排序(上)

递归 找重复(重复子问题,问题的规模要越来越小) 找变化(递归的核心是参数的变化) 找边界(程序的出口) 递归可以理解为,我自己做一部分工作,剩下的交给下属去做,下属亦如此。 例题1:反转字符串 像这种题就是切蛋糕思维,每次切一刀,使蛋糕越来越小 public class Main { public static String reverse(String str, int end) {...

QinLaoDeMaChu的博客 171

由ip地址和子网掩码求网络号、主机号、广播地址(超详细)

1、用二进制数表示IP地址   在进行计算之前,我们首先要学会十进制的IP地址怎么转换为二进制的IP地址。   给出一个例子: 十进制:172.16.25.3 二进制:10101100.00010000.00011001.00000011 1、如果两台主机的网络号相同,我们就说它们是同一网段 2、主机号的意义 - 1)主机号部分全变成1,即为该网段的广播地址 - 2)主机号部分全变成0,即为该网段的网路地址(网络号) 3、如果主机号部分为x位,则该网络能容纳最大主机数为: 2的x次方-2。减2

爱吃雪糕的小布丁的博客 9万+

算法导论第二章——插入排序和分治算法

目录2-1 插入排序2-2 分析算法2-3 分治算法归并排序分析分治算法 2-1 插入排序 将序列的第一个作为参考,循环与下一个进行比较,若后者小于前者,则交换位置。 插入算法简单代码: import sys if __name__ == "__main__": n = list(map(int, sys.stdin.readline().strip().split(' '))) ...

qingxuan_1993的博客 690

OpenAI最强编程助手Codex:下载安装、使用指南(含使用方式、提示技巧、趋势)

OpenAI最近上线了最强编程Agent——Codex,一起来看看吧!

Code_流苏:在代码中寻诗意,在实践中觅真知 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

蓝桥杯《算法很美》第二章 查找与排序C/C++【一】

查找与排序先从讲递归开始。课程列举了很多递归典例,按照理解的难度从简到繁,部分过于简单的就不再赘述了,只写一些有意义的代码。 递归的要点 找变化,找重复,找出口,子问题要与原问题有同样的结构。 【一】 辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第...

Show me CODE 404

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

[我的第一本算法书] 第二章 排序算法 摘录(冒泡排序,选择排序,插入排序,堆排序,归并排序,快速排序)

冒泡排序:就是重复’从序列右边开始比较相邻两个数字的大小,再根据结果交换两个数字的位置’这一操作的算法.这一过程中,数字像泡泡一样,慢慢从右向左’浮’到序列的顶端,所以这个算法才被成为’冒泡排序’ 在冒泡排序中,第一轮要比较n-1次,第二轮要比较n-2次…第n-1轮要比较1次,最终时间复杂度O(n^2),和输入数据的排列顺序无关 选择排序:就是重复’从待排序的数据中寻找最小值,将其与序列最左边的...

www.iqer.info 249

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

算法导论第二章习题

算法导论第二章习题笔记 文章目录算法导论第二章习题笔记习题2.1-2:重写插入排序过程,使之按非升序(而不是非降序)排序。2.1-3 :查找问题:2.1-4:考虑把两个n位二进制整数加起来的问题,这两个整数分别存储在两个n元数组A和B中。这两个整数的和应按二进制形式存储在一个(n+1)元数组C中。请给出该问题的形式化描述,并写出伪代码。2.2-1:用θ记号表示函数$n^3/1000-100n^2-...

hwl19951007的博客 2728

算法导论-第二章

算法导论第二章学习笔记

zhangph1229的博客 824

JAVA 修炼秘籍第十一章:《排序,没有最好最全,只有更好更全》

往期: JAVA 修炼秘籍第一章:《痛苦的折磨》 JAVA 修炼秘籍第二章:《逐渐魔化》 JAVA 修炼秘籍第三章:《绝地反击》 JAVA 修炼秘籍第四章:《闭关修炼》 JAVA 修炼秘籍第五章:《卧薪尝胆》 JAVA 修炼秘籍第六章:《鏖战》 JAVA 修炼秘籍第七章:《面向对象编程》 JAVA 修炼秘籍第八章:《String类》 JAVA 修炼秘籍第九章:《List / ArrayList / LinkedList 》 JAVA 修炼秘籍第十章:《优先级队列(堆)PriorityQueue》 JAVA修

Coach_zhang的博客 2508

第二章 算法基础

分治法中一个常见的思想是递归。分解:将原问题分解为若干子问题,这些子问题都是原问题的规模较小的实例;解决:递归求解这些子问题,当其规模足够小时,可以直接求解;合并:将子问题的解合并成原问题的解。

qq_39249627的博客 1065

我的第一本算法书之第二章排序

2-1 什么是排序 将数字按从小到大的顺序排列 2-2 冒泡排序 冒泡排序就是重复“从序列右边开始比较相邻两个数字的大小,再根据结果交换两个数字的位置”这一操作的算法。在这个过程中,数字会像泡泡一样,慢慢从右往左“浮”到序列的顶端,所以这个算法才被称为“冒泡排序”。 在冒泡排序中,第1轮需要比较n-1次,第2轮需要比较n-2次……第n-1轮需要比较1次。因此,总的比较次数为(n-1)+(n-2)+…+1≈n2/2。这个比较次数恒定为该数值,和输入数据的排列顺序无关。 不过,交换数字的次数和输入数据的排

weixin_43816759的博客 177

算法导论第二章

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34375233的博客 146

算法导论第二章小试牛刀

Author: bakari   Date: 2015.9.11 《算法导论》真是一本让人又爱又恨的书,爱自然是因为它精简凝练的算法呈现,读来让人欲罢不能;至于恨,是因为它在进行算法分析的时候所体现的数学思想太过于强大,对于我这种数学不上不下的人来说,自然有几分畏难,以致于我很早就接触这本书,前前后后也粗略地看过几遍,但感觉每一遍都像是重新看一样,没有...

weixin_33940102的博客 102

算法导论学习笔记-1-4章

第一章  算法在计算机中的应用 第二章  算法入门      插入排序      算法设计(分治法,分治法分析) 第三章  函数增长(渐进记号,时间复杂度) 第四章  递归式      代换法      递归树方法      主方法(主定理的证明) 第一章是个概要。 第二章以一个插入排序为例子,来介绍什么是算法,本书中讲解每个算法

ThinkCode的专栏 722
上一篇: 第二章 :查找与排序---------递归、查找与排序补充
下一篇: 第二章 :查找与排序-------递归经典问题——汉诺塔问题
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值