排序小结1

TL3562/3568内核驱动移植实战:解决无锡沐创N500L-AM4网口异常问题 本文详细介绍了在TL3562/3568平台上移植无锡沐创N500L-AM4网卡驱动的实战经验,重点解决了第四个网口通讯异常问题。通过升级驱动版本至rnpgbe-0.2.3,生成关键头文件并正确配置内核,最终实现四个网口稳定工作。文章还提供了性能优化建议和避坑指南,为类似硬件驱动移植项目提供参考。 阅读详情
 

1.常用各种排序(限于比较排序)

(1) Insertion:平均时间 O(n^2);最坏时间 O(n^2);空间 O(1);稳定

每次将一个待排的记录插入到前面的已经排好的队列中的适当位置。

$ Insertion-Sort(A)
for j=2 to length[A] do
    key <- A[j]
    i <- j-1
    while i>0 && A[i]>key  do
        A[i+1] <- A[i]
        i--
    A[i+1] <- key

(2) Merge:平均时间 O(nlgn);最坏时间 O(nlgn);空间 O(n);稳定

$ Merge(A,p,q,r)
for i=1 to q-p+1 do L[i] <- A[p+i-1]
for j=1 to r-q do R[j] <- A[q+j]
L[q-p+2] <- R[r-q+1] <- infty
i <- j <- 1
for k=p to r do
    L[i]<=R[j]?A[k]<-L[i++]:A[k]<-R[j++]
$ Merge-Sort(A,p,r)
if p<r  then
    q <- (p+r)/2
    Merge-Sort(A,p,q)
    Merge-Sort(A,q+1,r)
    Merge(A,p,q,r)

(3)Heap:平均时间 O(nlgn);最坏时间 O(nlgn);空间 O(1);不稳定

$ Max-Heapify(A,i)
if Left[i]<=heap-size[A] && A[Left[i]]>A[i]
    then largest <- Left[i]
    else largest <- i
if Right[i]<=heap-size[A] && A[Right[i]]>A[largest]
    then largest <- Right[i]
if largest 不等于 i  then
    exchange A[i] <-> A[largest]
    Max-Heapify(A,largest)
$ Build-Max-Heap(A)
heap-size[A] <- length[A]
for i=length[A]/2 to 1
    Max-Heapify(A,i)
$ Heap-Sort(A)
Build-Max-Heap(A)
for i=length[A] to 2
    exchange A[1] <-> A[i]
    heap-size[A]--
    Max-Heapify(A,1)

衍生的优先级队列算法,下面只介绍最大优先级队列

Insert(S,x):把元素x插入集合S.这一操作可写为S<—SU{x}

$ Heap-Max-Insert(A,key)
heap-size[A] <- heap-size[A]+1
A[heap-size[A]] <- -infinity
Heap-Increase-Key(A,heap-size[A],key)

Maximum(S):返回S中具有最大关键字的元素

$ Heap-Maximum(A)
return A[1]

Extract-Max(S):去掉并返回S中的具有最大关键字的元素

$ Heap-Extract-Max(A)
if heap-size[A]<1 then
        error "heap underflow"
max <- A[1]
A[1] <- A[heap-size[A]]
heap-size[A] <- heap-size[A]-1
Max-Heapify(A,1)
return max

Increase-Key(S,x,k):将元素x的关键字的值增加到k,这里k值不能小于x的原关键字的值

$ Heap-Increase-Key(A,i,key)
if key<A[i]  then error
A[i] <- key
while i>1 && A[Parent(i)]<A[i]  do
        exchange A[i] <-> A[Parent(i)]
        i <- Parent(i)

(4)Quick:平均时间 O(nlgn);最坏时间 O(n^2);空间 O(lgn);不稳定

通过一趟排序将待排的记录分割成独立的两部分,其中一部分记录的关键字均比另一个部分的关键字小,然后再分别对这两个部分记录继续进行排序,以达到整个序列有效。

快排有随机版本,也就是说在partition的时候是随机选取分点值的,这样的话平均效果会好一点,但操作相对复杂而且没有质的飞跃。

clrs的Ex7.2-2表明它对排序对象有多个相同值时候的效果是比较差的,有一种快排的三路变体可以解决这中边界数据。

$ Partition(A,p,r)
x <- A[r]
i <- p-1
for j=p to r-1  do
    if A[j]<=x then
        i++
        exchange A[i] <-> A[j]
exchange A[i+1] <-> A[r]
return i+1
$ Quick-Sort(A,p,r)
if p<r then
    q <- Partition(A,p,r)
    Quick-Sort(A,p,q-1)
    Quick-Sort(A,q+1,r)

快排的三路变体

PARTITION(A,p,r,int& q1, int& q2)  //用指针或者引用返回两个参数
1 x = A[r]	
2 i = p-1
3 for j = p to r - 1
4 	if A[j] <= x
5 		i = i + 1
6 		exchange A[i] with A[j]
7 exchange A[i + 1] with A[r]
8 k= i+1
9 for j = p to i 
10 	if A[j] = x
11		k = k - 1
12 		exchange A[j] with A[k]
13 q1 = k,q2=i+1

2.总结

n比较小的时候,适合插入排序和选择排序

基本有序的时候,适合直接插入排序和冒泡排序

n很大但是关键字的位数较少时,适合 链式基数排序

n很大的时候,适合 快速排序堆排序归并排序

无序的时候,适合 快速排序

ACL访问控制列表详解:原理、配置与应用 如果发现ACL规则没有达到预期效果,需要检查ACL规则配置是否正确,是否在正确的接口和方向上应用,以及规则顺序是否合理(ACL规则按顺序匹配,匹配到即停止)。其中,rule-id是规则的编号,用于确定规则的匹配顺序;例如,应该先配置针对特定主机和特定端口的规则,再配置针对整个网段的规则,最后配置允许所有流量的规则,这样才能确保ACL按照预期工作,避免因规则顺序不当导致的访问控制失效。例如,应该先配置针对特定主机的规则,再配置针对整个网段的规则,最后配置允许所有流量的规则,这样才能确保ACL按照预期工作。 阅读详情

相关推荐

告别Keil/IAR:在VSCode中用CMake+Clangd打造丝滑的STM32开发环境(附完整配置)

本文详细介绍了如何在VSCode中使用CMake和Clangd搭建高效的STM32开发环境,替代传统的Keil/IAR工具。通过完整的配置指南和快速开发技巧,帮助开发者实现轻量级、高度可定制的现代化开发流程,显著提升STM32项目的开发效率。

weixin_26843605的博客 164

算法学习小结 排序(1)

桶排序从字面上来理解就与桶子有关,而桶子的作用就是装东西,用个题目来理解。

WANG__SY的博客 862

Kindle电子书DRM破解全攻略:从下载到转换的完整流程(含最新DeDRM插件配置)

本文详细介绍了如何合法移除个人购买的Kindle电子书的DRM保护,实现跨设备阅读与备份。核心内容包括使用最新DeDRM插件(如noDRM分支)配合Calibre进行配置,并针对亚马逊最新的KFX加密格式提供了密钥提取与实战操作指南。文章强调该方法仅适用于个人合理使用,旨在帮助读者真正掌控自己的数字资产。

delta的博客 576

排序算法小结1(冒泡排序和选择排序)

1.冒泡排序的介绍 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。 1.1演示冒泡过程的例子(图解) 小结上面的图解过程: (1)一共进行数组的大小-1 次大的循环 (2)每一趟排序的次数在逐渐的减少 (3)如果我们发现在某趟排序中,没...

interesting_code的博客 417

YT8531 PHY芯片硬件设计与MDIO/RGMII实战指南

以太网PHY芯片是FPGA系统实现网络通信的物理层核心,其关键在于标准接口(如MDIO管理总线和RGMII数据接口)的正确实现与协同。MDIO作为IEEE 802.3定义的低速配置通道,负责寄存器级控制与状态监控;RGMII则通过双沿采样精简引脚,在千兆速率下兼顾性能与PCB布线可行性。技术价值体现在电压兼容性(支持1.8V/2.5V/3.3V)、可编程时序调节(RX_DELAY/TX_DELAY)及多级环回测试能力,显著提升国产FPGA平台(如Xilinx Zynq)的工程鲁棒性。典型应用场景涵盖嵌入式网

weixin_42453228的博客 1337

基于MATLAB的脑功能网络工具箱:BCT与FCLab

脑功能网络分析是神经科学领域的一个重要研究方向,它通过分析大脑中神经元之间的连接模式和信息传递方式,揭示脑网络的结构和功能。在这个领域,MATLAB是一个广泛使用的工具,提供了丰富的函数和工具箱来进行脑功能网络的分析和可视化。这些工具箱提供了丰富的函数和工具,使得脑功能网络的计算和分析变得更加简单和高效。在上述示例代码中,我们首先导入BCT工具箱,并构建一个邻接矩阵来表示脑网络的连接关系。在上述示例代码中,我们首先导入FCLab工具箱,并导入脑功能数据。函数对数据进行预处理,如去除噪声、降采样等操作。

web_bug407的博客 2611

排序小结——1. 排序的基本概念

from http://student.zjzk.cn/course_ware/data_structure/web/paixu/paixu8.1.1.1.htm 排序(sort)或分类     所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。其确切定义如下:  输入:n个记录R1,R2,…,Rn,其相应的关键字分别为K1,K2,…,Kn。  输出:Ril,Ri2

257

YOLOv11改进 | 特殊场景检测篇 | 低照度图像增强网络SCINet改进黑暗目标检测(全网独家首发)

本文给大家带来的改进机制是低照度图像增强网络SCINet,SCINet(自校正照明网络)是一种专为低光照图像增强设计的框架。它通过级联照明学习过程和权重共享机制来处理图像,优化了照明部分以提升图像质量。我将该网络集成在YOLOv11的主干上针对于图像的输入进行增强,同时该网络的并不会增加参数和计算量,基本和普通的网络结构保持一致,同时该结构支持自定义调节层数,来控制图像增强的效果 ,非常适合想要在黑夜目标检测领域发表文章的读者,该基本网络不会影响模型的速度。欢迎大家订阅我的专栏一起学习YOLO!

Snu77的博客 2207

排序算法小结(1) 插入排序

插入排序

563

【Zephyr电源与功耗专题】13_PMU电源驱动介绍

本文介绍的PMU芯片包含2路DCDC和6路LDO,在Zephyr实时操作系统下实现了完整的电源管理解决方案。

zero的博客 842

YOLO11改进 - 卷积Conv | DEGConv(方向引导边缘门控卷积) : 空间分块、方向先验、轻量边缘增强

本文介绍了方向引导边缘门控卷积(DEGConv),一种专为增强边缘敏感度与方向感知能力设计的轻量级模块。该方法通过 Sobel 算子生成方向嵌入,结合条纹卷积提取水平与垂直边缘特征,并利用门控机制动态抑制背景噪声,从而精准捕捉细粒度结构。我们将 DEGConv 成功集成进 YOLO11,在 Backbone 的 SPPF 后及 Neck 的 P3、P4 分支中引入该模块以优化特征提取。实验证明,集成 DEGConv 的 YOLO11 在检测任务中表现优异,有效提升了模型对复杂边缘与方向特征的建模能力。

魔改工程师的博客 676

排序算法小结(Java)1:冒泡排序

冒泡排序:冒泡排序是排序算法中较简单的排序算法; 它从第一个元素开始重复地走访过要排序的数列,一次比较两个元素,如果a[j]>a[j+1]就把他们交换过来,知道最后一个元素,这样未被排序的元素中最大元素"浮"到数列顶端;接着对未排序元素重复之前操作,数组完成排序。 public class BubbleSort { public void sort(int a...

158

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

经典排序方法及细节小结(1)

在数据结构的学习中,排序是我们要重点学习的一部分;在掌握几种经典排序算法的同时,我们还要能够根据实际中遇到的情况,结合它们的时间复杂度、空间复杂度、稳定性这几个方面选择最合适的算法。现针对常用的几种经典排序算法及易出错的地方总结如下: 1.插入排序 (1)直接插入排序 直接插入排序是一种最简单的排序方法,其基本思路是: ①将一条记录插入到已排好的有序表中,从而得到一个大小加1的新有序表...

weixin_30902251的博客 146

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

学习笔记(1)排序算法的小结

1、复杂度总结 (1)时间复杂度------“快些以nlog2n的速度归队” 平均情况下,快速排序、希尔排序、归并排序和堆排序的时间复杂度均为O(nlog2n),其他都是O(n2)。一个特殊的是基数排序,其时间复杂度是O(d(n+rd)). 最坏情况下,快速排序的时间复杂度是O(n2),其他都和平均情况下相同。 故事助记:军训的时候,教官说:“快些以nlog2n的速度归队”。快:快速排序;

u010329019的博客 555

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

算法导论小结(1)-插入排序及其扩展

By:             潘云登Date:          2009-7-11Email:         intrepyd@gmail.comHomepage: http://blog.youkuaiyun.com/intrepydCopyright: 该文章版权由潘云登所有。可在非商业目的下任意传播和复制。对于商业目的下对本文的任何行为需经作者同意。写在前面

2721

算法设计(1)--内排序算法小结

内排序算法 William Yi 完成于2016/10/18 Email: williamyi96@gmail.com 排序算法可以大致分为两种类型: 内排序 外排序 两者之间的区别是内排序是在内存中进行的排序,而外排序则可以借助磁盘空间。我们通过之前的学习了解到:内存中的排序时间代价与空间代价是成反比的,也就是说时间的缩短是以空间增长为代价的,空间的减少是以时间延长为代价的;而磁盘中

博观而约取,深研而广求 1423

算法之排序小结1---插入排序(Java)

public class InsertSort { /** * @param args */ public static void sortInsert(int []A) { for(int j = 1; j int key = A[j]; int i = j-1; while(i >= 0 && A[i] > key){// 要注意 这个i >= 0 A[i+1]

feige1990的专栏 383

排序知识点小结1-手写堆排序及STL实现

首先是造轮子: // maximum heap based on integer type #include &lt;bits/stdc++.h&gt; using namespace std; const int MAX_SIZE = 100000; int heap[MAX_SIZE], result[MAX_SIZE]; int size; void init(){ memset(h...

... 375

手撸冒泡排序代码:数据结构与算法小结1

首先,正在看文章的靓仔,现在有个需求给你: 将已知的数组里面的值重新排序,按照从小到大的顺序打印输出; 你会怎么思考呢? 这个需求需要用到排序的算法,排序有很多种方式,比如 1.冒泡排序:(今天以这个为例) 2.选择排序: 3.插入排序 一 .为啥叫冒泡排序呢? 一开始我也挺有疑问的,直到我将排序过程竖着看的时候,就豁然开朗了; 举个例子,一个数组长这样: Integer[] arr = {85, 7, 9, 56, 47, 1, 2, 8, 5}; 假如竖着看,...

StefanSSSS的博客 240

蓝桥杯——排序问题专题小结(2017.1.12)

Part 1:说明         综合大一C/C++及大二上学期数据结构内容,现对插入排序(直接插入/折半插入/希尔排序)、交换排序(冒泡/快速排序)、选择排序(直接选择排序)进行小结,通过输入n(数据元素个数)及n个数据元素,输出排序结果。 Part2:源代码汇总 #include #define maxn 1000 void BubbleSort(int a[],int n)

cr496352127的博客 666

排序小结(1)-冒泡,快排(c语言实现)

1.冒泡排序(最常见的排序) #include /** * 冒泡排序 */ void sort(int *a,int len) { int t; for(int i=0;i<len;i++) { for(int j=0;j<len-i-1;j++) { if(a[j]>a[j+1])

fool宋的专栏 932

排序算法小结

排序算法小结 排序小结    排序算法是一种基本并且常用的算法。由于实际工作中处理的数量巨大,所以排序算法对算法本身的速度要求很高。而一般我们所谓的算法的性能主要是指算法的复杂度,一般用O方法来表示。在后面我将给出详细的说明。    对于排序的算法我想先做一点简单的介绍,也是给这篇文章理一个提纲。    我将按照算法的复杂度,从简单到难来分析算法。    第一部分是简单排序算法,后面你将看

UP TO YOU 随心•索遇 2213

【LeetCode & 剑指offer刷题】查找与排序题1:二分查找小结

【LeetCode &amp; 剑指offer刷题】查找与排序题1:二分查找小结 【LeetCode &amp; 剑指offer 刷题笔记】目录(持续更新中...) 二分查找小结 /* 类型1 功能:查找和目标值完全相等的数 返回:如果存在,返回对应位置索引,否则返回-1   例:     [2, 4, 5, 6, 9],t...

技术改变世界 1238

《算法(第四版)》2.1.13纸牌排序,练习题学习小结

将一副扑克牌按花色排序(花色顺序是黑桃、红桃、梅花和方片),限制条件是所有牌都是背面朝上排成一列,而你一次只能翻看两张牌或者交换两张牌(保持背面朝上)。 不妨设黑桃=1,红桃=2,梅花=3,方片=4。 初始一个原始数组 for(int i = 0; i &lt; 52; i ++) { a[i] = i / 13 + 1; System.out.print(a[i] + " "); ...

MaaaMalik的博客 1672

算法导论6:排序小结和最值取法 2016.1.6

今天想做测试各个排序算法运行时间比较的程序,来对这几天学的排序算法小结一下。所以我先生成了1000000个1~150之间的随机数存到文件里。然后做了一个测试运行时间的程序。想看一下结构。但是结果效果并不太好。实践中,自己做的qsort函数和mergesort函数并没有理想中的那么快。 结果是这样:(可能并不准确,但却是是运行结果) 库函数快速排序:0.139000 seconds自制快速排...

weixin_33738982的博客 107

程序员面试宝典_第13章_数据结构基础_排序算法小结(1)

一、[算法思想]:将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为 R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。

u013654533的专栏 870
上一篇: DP::Poj1050 To the max
下一篇: DP::Poj1088 滑雪
初四
博客等级 码龄15年 3粉丝 19原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值