倒N字形排列java_Java排序8大算法实现

概述

排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。

我们这里说说八大排序就是内部排序。

1342514529_5795.jpg

当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。

快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;

1.插入排序—直接插入排序(Straight Insertion Sort)

基本思想:

将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。

要点:设立哨兵,作为临时存储和判断数组边界之用。

直接插入排序示例:

1342520948_8667.jpg

如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。

算法的实现:

void print(int a[], int n ,int i){

cout<

for(int j= 0; j<8; j++){

cout<

}

cout<

}

void InsertSort(int a[], int n)

{

for(int i= 1; i

if(a[i] 

int j= i-1;

int x = a[i];        //复制为哨兵,即存储待排序元素

a[i] = a[i-1];           //先后移一个元素

while(x 

a[j+1] = a[j];

j--;         //元素后移

}

a[j+1] = x;      //插入到正确位置

}

print(a,n,i);           //打印每趟排序的结果

}

}

int main(){

int a[8] = {3,1,5,7,2,4,9,6};

InsertSort(a,8);

print(a,8,8);

}

效率:

时间复杂度:O(n^2).

其他的插入排序有二分插入排序,2-路插入排序。

2. 插入排序—希尔排序(Shell`s Sort)

希尔排序是1959 年由D.L.Shell 提出来的,相对直接排序有较大的改进。希尔排序又叫缩小增量排序

基本思想:

先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。

操作方法:

选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;

按增量序列个数k,对序列进行k 趟排序;

每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。

希尔排序的示例:

1342577299_5077.jpg

算法实现:

我们简单处理增量序列:增量序列d = {n/2 ,n/4, n/8 .....1}n为要排序数的个数

即:先将要排序的一组记录按某个增量d(n/2,n为要排序数的个数)分成若干组子序列,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。继续不断缩小增量直至为1,最后使用直接插入排序完成排序。

void print(int a[], int n ,int i){

cout<

for(int j= 0; j<8; j++){

cout<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cross_val_score 如何对孤立森林_【收藏】森林防火手抄报素材汇总!

森林防火手抄报模板参考【文字素材参考】01森林防火根据森林火灾燃烧中央地点&#xff0c;蔓延速度&#xff0c;受害部位和程度&#xff0c;大致可把森林火灾分为三大类:一.地表火 二.树冠火 三.地下火。以受害森林面积大小为标准&#xff0c;森林火灾分为以下四类:1.森林火警:…

pb9 调用系统语音_成都电销系统一个月多少钱_选择灵狐传媒_收费透明

灵狐传媒表示&#xff1a;成都电销系统一个月多少钱_选择灵狐传媒_收费透明,在成都想要找一家专业的电销系统&#xff0c;今天小编带您看看该怎么选择吧&#xff0c;和研发实践&#xff0c;融合互联网、云计算及人工智能、通信、大数据等技术&#xff0c;研发推出了以人工智能为…

java thread 线程销毁_手把手带你了解Java线程的实现方式及生命周期原理

前言我们在工作中线程技术很多情况下都能用的到&#xff0c;而且我们在面试的时候&#xff0c;线程技术基本上也是必问的。今天我来从线程的实现方式以及线程的生命周期做一个全面的讲解与分析&#xff0c;帮助大家能更好的去了解线程技术。概念我们先来了解下线程和进程的概念…

python自动化_python自动化测试-Behave框架的用法介绍 - python测试学习

测码学院 Behave框架的用法介绍众所周知&#xff1a;行为驱动开发((behavior-drivendevelopment&#xff0c;BDD)是一种基于敏捷软件开发的方法。它可以鼓励开发人员&#xff0c;业务参与者和QA人员之间的协作。作为另一个Python自动化测试框架&#xff0c;“Behave”允许团队…

diskgeniusv4.4.0_入门TensorFlow2.0

今天老师带领我们入门TensorFlow2.0。至于tensorflow2.0是啥嘛&#xff0c;详细的可以度娘一下。我简述一下,就是一个end-to-end machine-Learning open source plantform(端对端的开源机器学习的平台)。学习tensorflow需要引入tensor这个概念&#xff0c;tensor的汉语意思就是…

php 其他页面获取session_PHP五十个提升执行效率的小技巧,和常见问题

在项目开发过程中&#xff0c;经常遇到了一些PHP处理程序性能底下的情况&#xff0c;程序运行在centosnginx环境&#xff0c;虽然这个有很多的原因如&#xff1a;服务器本身配置&#xff0c;运行环境nginx服务&#xff0c;php-fpm配置等等&#xff0c;更多有一点仍然是PHPer没有…

java怎么设置404界面_如何使用Spring MVC显示自定义的404 Not Found页面

本篇文章给大家带来的内容是关于如何使用Spring MVC显示自定义的404 Not Found页面&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。不知道大家对千篇一律的404 Not Found的错误页面是否感到腻歪了&#xff1f;其实通过很简单…

蓝牙解码格式哪个最好_拆解报告:山灵UP2 蓝牙音频接收器

主流手机逐步取消3.5mm接口&#xff0c;不再内置解码芯片&#xff0c;习惯使用有线耳机、对音质有一定要求的朋友只能选择音频转换线或者蓝牙耳机功率放大器这类产品替代。与转换线相比&#xff0c;蓝牙耳机功率放大器采用蓝牙无线连接更加自由&#xff0c;体积一般也比较小巧。…

项目助理这个工作怎么样_分析微信清理僵尸粉这个项目怎么样?

做微信清理僵尸粉做微信清理僵尸粉做微信清理僵尸粉本人利用这个方式一年副业赚了10万01 项目介绍(为什么这个项目受欢迎)现在每个人几乎都会用到微信&#xff0c;但是时间长了&#xff0c;微信好友都是几百上千好友(5000是上限)了。但是你有没有发现&#xff0c;每次跟你微信沟…

java 线程安全list_JAVA并发编程实战-线程安全性

线程安全性&#xff1a;对象的状态是指存储在状态变量&#xff08;例如实例和静态域&#xff09;中的数据。对象的状态可能包括其他依赖对象的域。例如&#xff1a;某个HashMap的状态不仅存储在HashMap对象本身&#xff0c;还存储在许多Map.Entry对象中。“共享”意味变量可以由…

日文转换为罗马音_手把手教你掌握韩语40音!入门必备哦

其实学习韩语还是蛮简单的&#xff0c;平时看韩剧也能学会几句比较常用的话&#xff5e;那么接下来我们进入正题&#xff0c;首先你可以根据自己的韩语学习经验和全网搜集&#xff0c;整理出以下能够快速学习韩语40音的方法&#xff0c;希望能帮助到更多面对韩语40音迷茫无措的…

win7一直显示正在启动_win7系统中提高启动速度并且禁用某些软件启动的操作小技巧...

我们在启动系统时&#xff0c;会出现启动速度过慢&#xff0c;甚至达到假死机状态&#xff0c;就是鼠标一直在转圈圈的等待状态。出现这个问题&#xff0c;一般是我们电脑中自启动的软件过多造成的&#xff0c;解决这个问题我们只要进入系统配置工具中&#xff0c;对系统进行相…

站怎么点都是一样_抖音怎么做?这几样一样都不能少,你都做到了吗?

有人说去年是内容爆发年&#xff0c;也有人说今年是内容元年&#xff0c;其实不管哪年都好&#xff0c;反正电商平台是越来越倾向于内容化运营&#xff0c;包括618都对入场商家的内容化运营有要求&#xff0c;特别是短视频内容。下面就给大家分享一下如何去做好一个抖音账号。分…

只能获取fixed语句初始值_因用了Insert into select语句,美女同事被开除了!

点击上方 web项目开发&#xff0c;选择 设为星标优质文章&#xff0c;及时送达--Insert into select请慎用。这天xxx接到一个需求&#xff0c;需要将表A的数据迁移到表B中去做一个备份。本想通过程序先查询查出来然后批量插入。但xxx觉得这样有点慢&#xff0c;需要耗费大量的网…

mybatis依赖_这大概就是公司一直用Mybatis的原因!真的太强了

01 什么是MyBatis、Spring&#xff1f;MyBatis是什么&#xff1f;它是一个SQL Mapping框架&#xff0c;它是一个持久化技术框架。再说得简单一点&#xff0c;它只不过是一个操作数据库的框架。Spring是什么&#xff1f;Spring就是一个大容器&#xff0c;不管是IoC还是AOP&#…

php excelreader 中文,如何解决php excel reader导出excel中文乱码?

解决php excel reader导出excel中文乱码的方法&#xff1a;1、如果不使用dump函数&#xff0c;可以通过修改【_defaultEncoding】变量解决问题&#xff1b;2、如果使用dump函数导出excel&#xff0c;需要修改htmlentities函数解决。解决php excel reader导出excel中文乱码的方法…

python画同心圆程序_Python Turtle:使用circle()方法绘制同心圆

I am not at this point interested in an efficient way of producing concentric circles: I want to see what I have to do to get this way to work 为了解决OP的问题&#xff0c;对其原始代码进行更改以使其正常工作是很简单的&#xff1a;turtle_pos(trl, [trl.xcor() …

绕过宝塔禁止的php函数,宝塔disable functions函数全被禁命令执行+加域服务器如何无限制执行命令...

本地搭建实验环境时遇到了不少小问题实验环境2008 R2宝塔搭建的IIS discuz3.2X手动上传shell冰蝎连接(ps:有表哥使用冰蝎的时候提示文件存在但是无法获取密钥&#xff0c;解决办法&#xff0c;使用最新版本的冰蝎即可&#xff0c;具体详情看更新日志)连接上shell发现无法执行命…

anaconda和python区别_初学 Python 者自学 Anaconda 的正确姿势是什么?

事实上Anaconda 和 Jupyter notebook已成为数据分析的标准环境。 简单来说&#xff0c;Anaconda是包管理器和环境管理器&#xff0c;Jupyter notebook 可以将数据分析的代码、图像和文档全部组合到一个web文档中。 接下来我详细介绍下Anaconda&#xff0c;并在最后给出Jupyter …

oracle 24756,关于ORA-24756: transaction does not exist的问题

最近在检查一个数据库时&#xff0c;发现跟踪日志有大量的错误( ORA-24756: transaction does not exist)1、主机系统环境IBM P740#oslevel -s6100-06-05-11152、数据库版本11.2.0.3 RAC ASM两节点3、在数据库跟踪日志中出现大量错误。(alert文件太大无法上传&#xff0c;几乎…