上次我们已经为大家介绍过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中选择排序与归并排序的内容,详细解析相关推荐

  1. java菜单项_java中菜单条和菜单项,详细解析

    在java作为一门非常重要的编程语言,在我们的日常使用中还是非常好用的,而且功能也是十分强大的.java中有很多的繁琐的基础知识,今天为大家介绍一下有关于菜单条和菜单项的内容,一起来看看吧. 首先说一 ...

  2. java 对比函数_java中字符串比较函数和操作函数,详细解析

    java编程语言中关于字符的内容也是极其丰富的,所以学习这方面的知识也十分重要的.今天就来为大家介绍一些与java字符串有关的内容,也就是java中字符串比较函数和操作函数,并为大家进行详细的解析,一 ...

  3. java static用法_Java中static关键字的作用和用法详细介绍

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  4. java幻灯片效果_java中怎么实现幻灯片切换特效?详细实例展示

    在java的使用过程中,我们会发现它的功能真的很强大,完成内容也极其丰富.今天就给大家介绍一下如何在java中实现幻灯片切换特效,以及通过实际的代码来为大家展示. 在最开始,需要说明的是,这个代码是实 ...

  5. java 排序方法详解_java中关于排序方式的实例讲解

    冒泡排序 特点:效率低,实现简单 思想(从小到大排):每一趟将待排序序列中最大元素移到最后,剩下的为新的待排序序列,重复上述步骤直到排完所有元素.这只是冒泡排序的一种,当然也可以从后往前排.publi ...

  6. java 股票 代码_Java中利用散列表实现股票行情的查询_java

    ---- 在java中,提供了一个散列表类Hashtable,利用该类,我们可以按照特定的方式来存储数据,从而达到快速检索的目的.本文以查询股票的收盘数据为例,详细地说明java中散列表的使用方法. ...

  7. java keytool 代码_java中Keytool的使用总结

    java中Keytool的使用总结 以前用过几次这个东东,但每次都重新查询一次.本文原始出处是这里 . ------------------------------------------------ ...

  8. java三目运算符代码_Java 中的三目运算符

    写在前面: 三目运算符是我们经常在代码中使用的,a= (b==null?0:1); 这样一行代码可以代替一个 if-else,可以使代码变得清爽易读.但是,三目运算符也是有一定的语言规范的.在运用不恰 ...

  9. java常用代码_Java 中常用代码 (欢迎补充)

    //-------------------------------------------------------------------------------------------------- ...

最新文章

  1. 特斯拉到底颠覆了什么?
  2. Java程序中的死锁
  3. python超级计算机_Python高性能计算库——Numba
  4. EF 4.1中内部经常提交的 exec sp_reset_connection 的用途原来是为了重用池中的连接...
  5. 如何打开.mmap查看的问题
  6. 彼聆智能语音机器人_人工智能2.0时代,创造他们的究竟是谁?
  7. POJ1177 Picture 线段树+离散化+扫描线
  8. YOLOv3改进方法增加特征尺度和训练层数
  9. 解开Future的神秘面纱之任务执行
  10. 对接支付宝遇到的坑sign check fail: check Sign and Data Fail
  11. 真正的轻量级WebService框架——使用JAX-WS(JWS)发布WebService
  12. php环境下cache失效,cache缓存失效高并发读数据库的问题
  13. wps linux数据库,金山 WPS for Linux
  14. STM32F401的PWM输出
  15. 社会心理学(第8版)
  16. JAVA基础(43)彻底理解cookie、session、token
  17. 软件设计师-备考知识点总结
  18. [转帖]改变无数人人生的32句实话[ChaseDream论坛]
  19. 这里有 9 本 AI 书籍
  20. R语言使用fisher.test函数进行精确概率检验、检验两个分类变量是否独立(自定义构建列联表仿真数据)

热门文章

  1. Ubuntu server中静态IP配置
  2. ctrl f显示查找计算机,请教:快捷方式查找Ctrl+F失效,怎么办 – 手机爱问
  3. 解决URI is not registered (Settings | Languages Frameworks | Schemas and DTDs)
  4. python数据分析框架
  5. rabbitMq消息不可达returnListener的使用
  6. 出现ping: unknown host www.baidu.com 问题解决
  7. Docker 的两类存储资源 - 每天5分钟玩转 Docker 容器技术(38)
  8. 分类算法----逻辑回归预测
  9. CSS多行显示省略号
  10. type traits