希尔排序是对于插入排序的一种优化代码:#include#includevoidshell_sort(int*p,intlen){inti;intj;intstep;inttmp;for(step=len/2;step>0;step=step/2){for(i=step;i=0&&tmp
插入排序(dart实现)
锦鲤跃龙
插入排序[toc]把数字插入合适的位置1.执行流程在执行过程中,插入排序会讲序列分为两部分头部是已经排好序的,尾部是待排序的从头开始扫描每一个元素每当扫描到一个原生,就将它插入到头部合适的位置,使得头部数据依然保持有序2.dart代码import'sort.dart';classInsertSort>extendsSort{@overridesort(){for(varbegin=1;begin0
第十五届蓝桥杯大赛青少组——赛前解析(算法)
小芋头的初码农
蓝桥杯蓝桥杯算法python
算法:进制转换、模拟算法,枚举算法,冒泡排序,插入排序,选择排序,递推算法,递归算法,贪心算法。1.进制转换二进制:只包含0和1八进制:只包含0-7十进制:只包含0-9十六进制:只包含0-9和‘A’-‘F’十进制转二进制、八进制、十六进制十进制数a=5二进制b=bin(a);八进制c=oct(a);十六进制d=hex(a)二进制转十进制、八进制、十六进制二进制数a=‘101010’十进制b=int
前端算法面试题3--排序、搜索、分治
临夏_
算法
排序:冒泡排序、快速排序、插入排序...搜索:二分搜索、顺序搜索...工具理解:https://visualgo.net/zh排序冒泡排序--交换冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较每对相邻的项,然后交换它们的顺序(如果需要)。遍历列表的工作是重复地进行直到没有更多需要交换的元素,也就是说列表已经排序完成了。functionbubbleSort(arr){letlen=ar
冒泡排序;选择排序;插入排序;快排;判断大小端;位运算
kannikeside
算法排序算法数据结构
1.冒泡排序:基础时间复杂度来说:o(n^2)从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。#includeintmain(void){intstr[32]=0;inti=0;intj=0;intlen=sizeof(str)/sizeof(str[0]);inttmp=0;for(i=0;istr[i+1]){tmp=str[i]
【算法】Java实现常用排序算法二(希尔排序、归并排序、计数排序、桶排序、基数排序)
傲丿奈我何
算法算法java排序算法数据结构
本博文是排序算法的第二篇,前作指路:【算法】JAVA实现常用排序算法一(冒泡排序、选择排序、插入排序、堆排序、快速排序)Java实现常用排序二前言希尔排序原理流程分析代码实现归并排序原理流程分析代码实现计数排序原理流程分析代码实现桶排序原理流程分析代码实现基数排序原理流程分析代码实现后记前言学习算法最绕不开的就是排序,虽然这是个信息爆炸的时代,但搜索到的毕竟是别人的,特此总结了一下常用的几种排序,
数据结构(五)——哈希表,数据排序方法
m0_6793018756
数据结构散列表算法
哈希表:哈希:将数据通过哈希算法映射称为一个键值存时在键值对应的位置存储取时通过键值对应的位置查找哈希冲突(哈希碰撞):多个数据通过哈希算法映射成同一个键值存储数字:排序算法:1.冒泡排序:简单2.选择排序:交换次数少,交换的数据所占空间较大时,适用于选择排序(较少交换次数带来的时间开销)时间复杂度:冒泡排序O(n^2)选择排序O(n^2)插入排序O(n^2)已经有序的数据使用插入排序时间复杂度为
数据结构---五大排序---哈希表---二分查找法
踢球的程序猿
数据结构散列表排序算法
目录一、五大排序1.1.冒泡排序1.2.选择排序1.3.插入排序1.4.希尔排序1.5.快速排序二、哈希表2.1.哈希表结构的定义2.2.初始化哈希表2.3.插入元素2.4.打印哈希表2.5.查找元素2.6.销毁哈希表三、二分查找法(折半查找法)一、五大排序1.1.冒泡排序时间复杂度:o(n^2)稳定性:稳定intBubbleSort(int*pArray,intMaxLen){intj=0;in
Java算法之TimSort
持续输出...
#Java算法算法java排序算法
TimSort简介TimSort是一种高效的排序算法,由TimPeters于2002年设计,主要特点是结合了归并排序(MergeSort)和插入排序(InsertionSort)的优点。这种算法在很多编程语言的默认排序函数中得到应用,如Python的sort()和Java的Arrays.sort()。算法原理TimSort的工作原理如下:分解:将待排序数组分解为小的有序序列,每个序列长度为minr
Java算法之希尔排序(Shell Sort)
持续输出...
#Java算法算法java排序算法
简介希尔排序,又称为缩小增量排序,是插入排序的一种改进算法。它通过引入增量序列,将原始数据序列分成多个子序列,对每个子序列进行插入排序,然后逐渐减小增量,直到增量为1,完成整个排序过程。算法步骤选择一个增量序列,例如初始时为数组长度的一半。将数组分为多个子序列,每个子序列的元素间隔为增量序列的第一个值。对每个子序列进行直接插入排序。逐步减小增量序列的值,重复步骤2和3,直到增量为1。//shell
插入排序(含动画演示)——C++
Bennnnnnn
小楷算法题解算法排序算法c++
算法思想插入排序,即将数列中无序的元素插入到数列中已排序数列的适当位置,最终形成完全有序数列。学习插入算法,我们应先了解原理如何,先上动画图解进行演示具体代码如下:#includeusingnamespacestd;voiddengzilin(int*a,intlen)//dengzilin是我宿友,hhhh{for(inti=1;i=0&&key>len;cout>a[i];}dengzilin
Java算法之插入排序(Insertion Sort)
持续输出...
#Java算法算法java排序算法
插入排序简介插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。这个过程像打牌时整理手中的牌一样,逐步将数据排列成有序。算法原理插入排序的工作原理如下:将第一元素视为已排序的序列。从未排序序列中取第一个元素,从已排序序列的末尾开始比较。比较如果已排序序列中的元素比待插入元素大,则将已排序序列的元素向后移动一位。重复步骤3
十大排序算法
雾喔
算法排序算法算法数据结构
排序算法的分类1插入:插入,折半插入,希尔2交换:冒泡,快速3选择:简单选择,堆4归并:归并(不只二路归并)5基数:1.插入排序voidinsert_sort(){for(inti=1;i=0&&x=1;i--){boolflag=true;for(intj=1;ja[j]){swap(a[j-1],a[j]);flag=false;}if(flag)return;}}4.希尔排序voidshel
排序算法之插入排序详细解读(附带Java代码解读)
南城花随雪。
算法分析排序算法java算法
插入排序(InsertionSort)是一种简单直观的排序算法,通常用于少量数据的排序。它的工作方式与我们整理扑克牌类似:每次将一张牌插入到已经排好序的牌堆中。算法思想开始排序:假设第一个元素已经排好序。逐步插入:从第二个元素开始,依次将每个元素插入到前面已经排好序的部分,使得插入后依然有序。重复步骤2:直到数组的最后一个元素。过程示例假设有一个待排序的数组:[12,11,13,5,6]初始状态:
C++常见的十种常见排序算法汇总
LQS2020
c++算法开发语言
C++实现的十大常见排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、基数排序和桶排序。每种排序算法都有其特点和适用场景。实现代码免费下载链接1.冒泡排序(BubbleSort)#include#includevoidbubbleSort(std::vector&arr){intn=arr.size();for(inti=0;iarr[j+1]){std:
Java 插入排序(insertion sort)
巴德不说话
Java算法java排序算法
publicstaticvoidinsertionSort(int[]array){if(null==array||1==array.length){return;}for(inti=1;i=0&&insertValue<array[j];j--){array[j+1]=array[j];}array[j+1]=insertValue;}}
插入排序算法程序Java代码(Insertion Sort)
faramita_of_mine
插入排序算法排序Java代码实现
插入排序:插入排序:算法描述:代码实现:代码运行截图:插入排序: 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入算法描述: 一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:1.从第一个元素开始,该元素可以认为已经被排序;2.取出下一个元素,在已经排
前端宝典十八:高频算法排序之冒泡、插入、选择、归并和快速
桃子叔叔
前端深度解析系列大厂进阶算法ecmascript算法排序算法前端javascript
前言十大经典排序算法的时间复杂度与空间复杂度比较。名词解释:n:数据规模;k:桶的个数;In-place:占用常数内存,不占用额外内存;Out-place:占用额外内存。本文主要探讨高频算法排序中的几个常见的冒泡、插入、选择、归并和快速冒泡排序和选择排序是最常见的两种排序,语法简单,容易实现,冒泡排序、插入排序和选择排序虽然在时间复杂度上相对较高,但对于小规模数据或者部分已排序的数据,它们可能更加
数组(二)———数组的排序算法①
啵啵薯条
算法与数据结构排序算法算法数据结构
目录冒泡排序基本步骤:复杂度分析实现示例(Java):选择排序基本步骤:复杂度分析实现示例(Java):插入排序基本步骤:复杂度分析实现示例(Java):希尔排序基本步骤:复杂度分析实现示例(Java):归并排序基本步骤:复杂度分析实现示例(Java):冒泡排序定义:冒泡排序(BubbleSort)是一种简单的排序算法,其基本思想是重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它
【数据结构|C语言版】四大排序(算法)
C_GUIQU
【数据结构(C语言版)学习】数据结构c语言排序算法
前言1.插入排序1.1直接插入排序1.2希尔排序2.选择排序2.1选择排序2.2堆排序3.交换排序3.1冒泡排序冒泡排序的步骤3.2快速排序快速排序的步骤4.归并排序归并排序的步骤:代码解释:归并排序的性能:上期回顾:【数据结构|C语言版】栈和队列个人主页:C_GUIQU归属专栏:【数据结构(C语言版)学习】前言各位小伙伴大家好!上次小编给大家讲解了数据结构中的树、二叉树和堆,接下来我们讲解一下排
排序算法太多?常用排序都在这了,一篇文章总结和实现所有面试会考的排序算法(基于Python实现)
宇宙之一粟
不归路之Python#IT面试题收集与总结数据结构与算法算法数据结构排序算法pythonjava
文章目录排序算法1.常见的排序算法1.1选择排序1.1.1思想1.1.2实现**1.1.3选择排序分析**1.2冒泡排序**1.2.1思想****1.2.2实现****1.2.3冒泡排序分析**1.3插入排序**1.3.1思想****1.3.2实现****1.3.3插入排序分析**1.4归并排序☆☆★**1.4.1思想****1.4.2实现****1.4.3归并排序分析**1.5快速排序☆★★**
排序方法总结
wx20041102
排序算法算法数据结构
下列具体实现了希尔排序插入排序快速排序归并排序(包括递归和非递归)如若有任何不懂之处,欢迎评论,我会尽我之力解答希尔排序:总结:对gap的运用voidShellSort(int*nums,intnumsSize){inti=0;intend=0;inttemp=0;intgap=numsSize;while(gap>1){gap=gap/3+1;//+1是为了保证最后gap为1,进行插入排序,从而
蓝桥杯算法基础(11):十大排序算法(冒泡排序)c语言般版
湖前一人对影成双
算法排序算法c语言
十大排序算法合集(c语言般)冒泡排序选择排序插入排序希尔排序快速排序归并排序堆排序计数排序桶排序基数排序分类:交换类1.冒泡排序2.快速排序分配类1.计数排序2.基数排序选择类1.选择排序归并类1.归并排序插入类1.插入排序2.希尔排序冒泡排序#include//它是一个基于交换的排序,每一轮搜索最大值放到序列的尾部#defineMAXSIZE10voidintArr(intarr[],intle
蓝桥杯算法基础(12):十大排序算法(选择排序)(插入排序)c语言般版
湖前一人对影成双
排序算法算法蓝桥杯
选择排序选择排序的基本思想是冒泡排序,找到最小值,与未排序部分的第一个元素进行交换前面为已排序部分,后面为未排序部分选择排序需要用到三个指针第一个指针:从第一个元素开始,每次与最小值交换位置第二个指针:从第一个指针所在位置开始,记录未排序部分最小值的位置第三个指针:从第一个指针所在位置开始,往后找比k所在位置元素小的元素,找到后,k指向此位置intselectSort(intarr[],intle
书其实只有三类
西蜀石兰
类
一个人一辈子其实只读三种书,知识类、技能类、修心类。
知识类的书可以让我们活得更明白。类似十万个为什么这种书籍,我一直不太乐意去读,因为单纯的知识是没法做事的,就像知道地球转速是多少一样(我肯定不知道),这种所谓的知识,除非用到,普通人掌握了完全是一种负担,维基百科能找到的东西,为什么去记忆?
知识类的书,每个方面都涉及些,让自己显得不那么没文化,仅此而已。社会认为的学识渊博,肯定不是站在
《TCP/IP 详解,卷1:协议》学习笔记、吐槽及其他
bylijinnan
tcp
《TCP/IP 详解,卷1:协议》是经典,但不适合初学者。它更像是一本字典,适合学过网络的人温习和查阅一些记不清的概念。
这本书,我看的版本是机械工业出版社、范建华等译的。这本书在我看来,翻译得一般,甚至有明显的错误。如果英文熟练,看原版更好:
http://pcvr.nl/tcpip/
下面是我的一些笔记,包括我看书时有疑问的地方,也有对该书的吐槽,有不对的地方请指正:
1.
Linux—— 静态IP跟动态IP设置
eksliang
linuxIP
一.在终端输入
vi /etc/sysconfig/network-scripts/ifcfg-eth0
静态ip模板如下:
DEVICE="eth0" #网卡名称
BOOTPROTO="static" #静态IP(必须)
HWADDR="00:0C:29:B5:65:CA" #网卡mac地址
IPV6INIT=&q
Informatica update strategy transformation
18289753290
更新策略组件: 标记你的数据进入target里面做什么操作,一般会和lookup配合使用,有时候用0,1,1代表 forward rejected rows被选中,rejected row是输出在错误文件里,不想看到reject输出,将错误输出到文件,因为有时候数据库原因导致某些column不能update,reject就会output到错误文件里面供查看,在workflow的
使用Scrapy时出现虽然队列里有很多Request但是却不下载,造成假死状态
酷的飞上天空
request
现象就是:
程序运行一段时间,可能是几十分钟或者几个小时,然后后台日志里面就不出现下载页面的信息,一直显示上一分钟抓取了0个网页的信息。
刚开始已经猜到是某些下载线程没有正常执行回调方法引起程序一直以为线程还未下载完成,但是水平有限研究源码未果。
经过不停的google终于发现一个有价值的信息,是给twisted提出的一个bugfix
连接地址如下http://twistedmatrix.
利用预测分析技术来进行辅助医疗
蓝儿唯美
医疗
2014年,克利夫兰诊所(Cleveland Clinic)想要更有效地控制其手术中心做膝关节置换手术的费用。整个系统每年大约进行2600例此类手术,所以,即使降低很少一部分成本,都可以为诊 所和病人节约大量的资金。为了找到适合的解决方案,供应商将视野投向了预测分析技术和工具,但其分析团队还必须花时间向医生解释基于数据的治疗方案意味着 什么。
克利夫兰诊所负责企业信息管理和分析的医疗
java 线程(一):基础篇
DavidIsOK
java多线程线程
&nbs
Tomcat服务器框架之Servlet开发分析
aijuans
servlet
最近使用Tomcat做web服务器,使用Servlet技术做开发时,对Tomcat的框架的简易分析:
疑问: 为什么我们在继承HttpServlet类之后,覆盖doGet(HttpServletRequest req, HttpServetResponse rep)方法后,该方法会自动被Tomcat服务器调用,doGet方法的参数有谁传递过来?怎样传递?
分析之我见: doGet方法的
揭秘玖富的粉丝营销之谜 与小米粉丝社区类似
aoyouzi
揭秘玖富的粉丝营销之谜
玖富旗下悟空理财凭借着一个微信公众号上线当天成交量即破百万,第七天成交量单日破了1000万;第23天时,累计成交量超1个亿……至今成立不到10个月,粉丝已经超过500万,月交易额突破10亿,而玖富平台目前的总用户数也已经超过了1800万,位居P2P平台第一位。很多互联网金融创业者慕名前来学习效仿,但是却鲜有成功者,玖富的粉丝营销对外至今仍然是个谜。
近日,一直坚持微信粉丝营销
Java web的会话跟踪技术
百合不是茶
url会话Cookie会话Seession会话Java Web隐藏域会话
会话跟踪主要是用在用户页面点击不同的页面时,需要用到的技术点
会话:多次请求与响应的过程
1,url地址传递参数,实现页面跟踪技术
格式:传一个参数的
url?名=值
传两个参数的
url?名=值 &名=值
关键代码
web.xml之Servlet配置
bijian1013
javaweb.xmlServlet配置
定义:
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>com.myapp.controller.MyFirstServlet</servlet-class>
<init-param>
<param-name>
利用svnsync实现SVN同步备份
sunjing
SVN同步E000022svnsync镜像
1. 在备份SVN服务器上建立版本库
svnadmin create test
2. 创建pre-revprop-change文件
cd test/hooks/
cp pre-revprop-change.tmpl pre-revprop-change
3. 修改pre-revprop-
【分布式数据一致性三】MongoDB读写一致性
bit1129
mongodb
本系列文章结合MongoDB,探讨分布式数据库的数据一致性,这个系列文章包括:
数据一致性概述与CAP
最终一致性(Eventually Consistency)
网络分裂(Network Partition)问题
多数据中心(Multi Data Center)
多个写者(Multi Writer)最终一致性
一致性图表(Consistency Chart)
数据
Anychart图表组件-Flash图转IMG普通图的方法
白糖_
Flash
问题背景:项目使用的是Anychart图表组件,渲染出来的图是Flash的,往往一个页面有时候会有多个flash图,而需求是让我们做一个打印预览和打印功能,让多个Flash图在一个页面上打印出来。
那么我们打印预览的思路是获取页面的body元素,然后在打印预览界面通过$("body").append(html)的形式显示预览效果,结果让人大跌眼镜:Flash是
Window 80端口被占用 WHY?
bozch
端口占用window
平时在启动一些可能使用80端口软件的时候,会提示80端口已经被其他软件占用,那一般又会有那些软件占用这些端口呢?
下面坐下总结:
1、web服务器是最经常见的占用80端口的,例如:tomcat , apache , IIS , Php等等;
2
编程之美-数组的最大值和最小值-分治法(两种形式)
bylijinnan
编程之美
import java.util.Arrays;
public class MinMaxInArray {
/**
* 编程之美 数组的最大值和最小值 分治法
* 两种形式
*/
public static void main(String[] args) {
int[] t={11,23,34,4,6,7,8,1,2,23};
int[]
Perl正则表达式
chenbowen00
正则表达式perl
首先我们应该知道 Perl 程序中,正则表达式有三种存在形式,他们分别是:
匹配:m/<regexp>;/ (还可以简写为 /<regexp>;/ ,略去 m)
替换:s/<pattern>;/<replacement>;/
转化:tr/<pattern>;/<replacemnt>;
[宇宙与天文]行星议会是否具有本行星大气层以外的权力呢?
comsci
举个例子: 地球,地球上由200多个国家选举出一个代表地球联合体的议会,那么现在地球联合体遇到一个问题,地球这颗星球上面的矿产资源快要采掘完了....那么地球议会全体投票,一致通过一项带有法律性质的议案,既批准地球上的国家用各种技术手段在地球以外开采矿产资源和其它资源........
&
Oracle Profile 使用详解
daizj
oracleprofile资源限制
Oracle Profile 使用详解 转
一、目的:
Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该profile分配给用户,则该用户所能使用的数据库资源都在该profile的限制之内。
二、条件:
创建profile必须要有CREATE PROFIL
How HipChat Stores And Indexes Billions Of Messages Using ElasticSearch & Redis
dengkane
elasticsearchLucene
This article is from an interview with Zuhaib Siddique, a production engineer at HipChat, makers of group chat and IM for teams.
HipChat started in an unusual space, one you might not
循环小示例,菲波拉契序列,循环解一元二次方程以及switch示例程序
dcj3sjt126com
c算法
# include <stdio.h>
int main(void)
{
int n;
int i;
int f1, f2, f3;
f1 = 1;
f2 = 1;
printf("请输入您需要求的想的序列:");
scanf("%d", &n);
for (i=3; i<n; i
macbook的lamp环境
dcj3sjt126com
lamp
sudo vim /etc/apache2/httpd.conf
/Library/WebServer/Documents
是默认的网站根目录
重启Mac上的Apache服务
这个命令很早以前就查过了,但是每次使用的时候还是要在网上查:
停止服务:sudo /usr/sbin/apachectl stop
开启服务:s
java ArrayList源码 下
shuizhaosi888
ArrayList源码
版本 jdk-7u71-windows-x64
JavaSE7 ArrayList源码上:http://flyouwith.iteye.com/blog/2166890
/**
* 从这个列表中移除所有c中包含元素
*/
public boolean removeAll(Collection<?> c) {
Spring Security(08)——intercept-url配置
234390216
Spring Securityintercept-url访问权限访问协议请求方法
intercept-url配置
目录
1.1 指定拦截的url
1.2 指定访问权限
1.3 指定访问协议
1.4 指定请求方法
1.1 &n
Linux环境下的oracle安装
jayung
oracle
linux系统下的oracle安装
本文档是Linux(redhat6.x、centos6.x、redhat7.x) 64位操作系统安装Oracle 11g(Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production),本文基于各种网络资料精心整理而成,共享给有需要的朋友。如有问题可联系:QQ:52-7
hotspot虚拟机
leichenlei
javaHotSpotjvm虚拟机文档
JVM参数
http://docs.oracle.com/javase/6/docs/technotes/guides/vm/index.html
JVM工具
http://docs.oracle.com/javase/6/docs/technotes/tools/index.html
JVM垃圾回收
http://www.oracle.com
读《Node.js项目实践:构建可扩展的Web应用》 ——引编程慢慢变成系统化的“砌砖活”
noaighost
Webnode.js
读《Node.js项目实践:构建可扩展的Web应用》
——引编程慢慢变成系统化的“砌砖活”
眼里的Node.JS
初初接触node是一年前的事,那时候年少不更事。还在纠结什么语言可以编写出牛逼的程序,想必每个码农都会经历这个月经性的问题:微信用什么语言写的?facebook为什么推荐系统这么智能,用什么语言写的?dota2的外挂这么牛逼,用什么语言写的?……用什么语言写这句话,困扰人也是阻碍
快速开发Android应用
rensanning
android
Android应用开发过程中,经常会遇到很多常见的类似问题,解决这些问题需要花时间,其实很多问题已经有了成熟的解决方案,比如很多第三方的开源lib,参考
Android Libraries 和
Android UI/UX Libraries。
编码越少,Bug越少,效率自然会高。
但可能由于 根本没听说过、听说过但没用过、特殊原因不能用、自己已经有了解决方案等等原因,这些成熟的解决
理解Java中的弱引用
tomcat_oracle
java工作面试
不久之前,我
面试了一些求职Java高级开发工程师的应聘者。我常常会面试他们说,“你能给我介绍一些Java中得弱引用吗?”,如果面试者这样说,“嗯,是不是垃圾回收有关的?”,我就会基本满意了,我并不期待回答是一篇诘究本末的论文描述。 然而事与愿违,我很吃惊的发现,在将近20多个有着平均5年开发经验和高学历背景的应聘者中,居然只有两个人知道弱引用的存在,但是在这两个人之中只有一个人真正了
标签输出html标签" target="_blank">关于标签输出html标签
xshdch
jsp
http://back-888888.iteye.com/blog/1181202
关于<c:out value=""/>标签的使用,其中有一个属性是escapeXml默认是true(将html标签当做转移字符,直接显示不在浏览器上面进行解析),当设置escapeXml属性值为false的时候就是不过滤xml,这样就能在浏览器上解析html标签,
&nb