选择排序java从小到大代码_java中选择排序与归并排序的内容,详细解析
上次我们已经为大家介绍过java中插入、分治和快速排序的内容,今天再来为大家介绍一下java中选择排序与归并排序的具体内容,并且通过实际的代码为大家解析。
首先我们需要了解的是,选择排序也是一种简单直观的排序算法,实现原理比较直观易懂。
1.在未排序数列中找到最小元素;2.然后将其与数列的首部元素进行交换;3.在剩余未排序元素中继续找出最小元素;4.将其与已排序数列的末尾位置元素交换;5.以此类推,直至所有元素圴排序完毕,图片如下所示:
代码如下所示:public static void sort(int[] arr)
{
for (int i = 0; i
{
int min = i; // 遍历的区间最小的值
for (int j = i + 1; j
{
if (arr[j]
{
// 找到当前遍历区间最小的值的索引
min = j;
}
}
if (min != i)
{
// 发生了调换
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
}
接下来我们看一下归并排序。
归并排序,简而言之就是把一串数,从中平等分为两份,再把两份再细分,直到不能细分为止,其实就是分而治之的分的步骤。再从最小的单元,两两合并,合并的规则是将它们按从小到大的顺序放到一个临时数组中,再把这个临时数组替换原数组对应的位置,这就是治。具体图解如下所示:
代码展示如下所示:public static void mergeSort(int[] a, int s, int e)
{
int m = (s + e) / 2;
if (s
{
mergeSort(a, s, m);
mergeSort(a, m + 1, e);
//归并
merge(a, s, m, e);
}
}
private static void merge(int[] a, int s, int m, int e)
{
//初始化一个从起始s到终止e的一个数组
int[] temp = new int[(e - s) + 1];
//左起始指针
int l = s;
//右起始指针
int r = m + 1;
int i = 0;
//将s-e这段数据在逻辑上一分为二,l-m为一个左边的数组,r-e为一个右边的数组,两边都是有序的
//从两边的第一个指针开始遍历,将其中小的那个值放在temp数组中
while (l <= m && r <= e)
{
if (a[l]
{
temp[i++] = a[l++];
}
else
{
temp[i++] = a[r++];
}
}
//将两个数组剩余的数放到temp中
while (l <= m)
{
temp[i++] = a[l++];
}
while (r <= e)
{
temp[i++] = a[r++];
}
//将temp数组覆盖原数组
for (int n = 0; n
{
a[s + n] = temp[n];
}
}
以上就是有关在java中选择排序与归并排序的具体内容,并且通过实际的代码为大家展示。如果你对java知识感兴趣,想要了解更多java基础,敬请关注奇Q工具网。
推荐阅读:
选择排序java从小到大代码_java中选择排序与归并排序的内容,详细解析相关推荐
- java菜单项_java中菜单条和菜单项,详细解析
在java作为一门非常重要的编程语言,在我们的日常使用中还是非常好用的,而且功能也是十分强大的.java中有很多的繁琐的基础知识,今天为大家介绍一下有关于菜单条和菜单项的内容,一起来看看吧. 首先说一 ...
- java 对比函数_java中字符串比较函数和操作函数,详细解析
java编程语言中关于字符的内容也是极其丰富的,所以学习这方面的知识也十分重要的.今天就来为大家介绍一些与java字符串有关的内容,也就是java中字符串比较函数和操作函数,并为大家进行详细的解析,一 ...
- java static用法_Java中static关键字的作用和用法详细介绍
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
- java幻灯片效果_java中怎么实现幻灯片切换特效?详细实例展示
在java的使用过程中,我们会发现它的功能真的很强大,完成内容也极其丰富.今天就给大家介绍一下如何在java中实现幻灯片切换特效,以及通过实际的代码来为大家展示. 在最开始,需要说明的是,这个代码是实 ...
- java 排序方法详解_java中关于排序方式的实例讲解
冒泡排序 特点:效率低,实现简单 思想(从小到大排):每一趟将待排序序列中最大元素移到最后,剩下的为新的待排序序列,重复上述步骤直到排完所有元素.这只是冒泡排序的一种,当然也可以从后往前排.publi ...
- java 股票 代码_Java中利用散列表实现股票行情的查询_java
---- 在java中,提供了一个散列表类Hashtable,利用该类,我们可以按照特定的方式来存储数据,从而达到快速检索的目的.本文以查询股票的收盘数据为例,详细地说明java中散列表的使用方法. ...
- java keytool 代码_java中Keytool的使用总结
java中Keytool的使用总结 以前用过几次这个东东,但每次都重新查询一次.本文原始出处是这里 . ------------------------------------------------ ...
- java三目运算符代码_Java 中的三目运算符
写在前面: 三目运算符是我们经常在代码中使用的,a= (b==null?0:1); 这样一行代码可以代替一个 if-else,可以使代码变得清爽易读.但是,三目运算符也是有一定的语言规范的.在运用不恰 ...
- java常用代码_Java 中常用代码 (欢迎补充)
//-------------------------------------------------------------------------------------------------- ...
最新文章
- 特斯拉到底颠覆了什么?
- Java程序中的死锁
- python超级计算机_Python高性能计算库——Numba
- EF 4.1中内部经常提交的 exec sp_reset_connection 的用途原来是为了重用池中的连接...
- 如何打开.mmap查看的问题
- 彼聆智能语音机器人_人工智能2.0时代,创造他们的究竟是谁?
- POJ1177 Picture 线段树+离散化+扫描线
- YOLOv3改进方法增加特征尺度和训练层数
- 解开Future的神秘面纱之任务执行
- 对接支付宝遇到的坑sign check fail: check Sign and Data Fail
- 真正的轻量级WebService框架——使用JAX-WS(JWS)发布WebService
- php环境下cache失效,cache缓存失效高并发读数据库的问题
- wps linux数据库,金山 WPS for Linux
- STM32F401的PWM输出
- 社会心理学(第8版)
- JAVA基础(43)彻底理解cookie、session、token
- 软件设计师-备考知识点总结
- [转帖]改变无数人人生的32句实话[ChaseDream论坛]
- 这里有 9 本 AI 书籍
- R语言使用fisher.test函数进行精确概率检验、检验两个分类变量是否独立(自定义构建列联表仿真数据)
热门文章
- Ubuntu server中静态IP配置
- ctrl f显示查找计算机,请教:快捷方式查找Ctrl+F失效,怎么办 – 手机爱问
- 解决URI is not registered (Settings | Languages Frameworks | Schemas and DTDs)
- python数据分析框架
- rabbitMq消息不可达returnListener的使用
- 出现ping: unknown host www.baidu.com 问题解决
- Docker 的两类存储资源 - 每天5分钟玩转 Docker 容器技术(38)
- 分类算法----逻辑回归预测
- CSS多行显示省略号
- type traits