在互联网的大趋势下,数据结构和算法知识,都扮演着重要的角色。

在面试中和实际工作中也是经常遇到和使用到的。

为了让大家了解java中的算法及其代码实现,小编整理出了以下常用的 8 种:

01

直接插入排序

经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中。

将第一个数和第二个数排序,然后构成一个有序序列。

将第三个数插入进去,构成一个新的有序序列。

对第四个数、第五个数……直到最后一个数,重复第二步。

如何写成代码:

首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用插入。

设定插入数和得到已经排好序列的最后一个数的位数。insertNum和j=i-1。

从最后一个数开始向前循环,如果插入数小于当前数,就将当前数向后移动一位。

将当前数放置到空着的位置,即j+1。

代码实现如下:

02

希尔排序

用于直接插入排序问题,当数据量巨大时。

将数的个数设为n,取奇数k=n/2,将下标差值为k的书分为一组,构成有序序列。

再取k=k/2 ,将下标差值为k的书分为一组,构成有序序列。

重复第二步,直到k=1执行简单插入排序。

如何写成代码:

首先确定分的组数。

然后对组中元素进行插入排序。

然后将length/2,重复1,2步,直到length=0为止。

代码实现如下:

03

简单选择排序

常用于取序列中最大最小的几个数时。

如果每次比较都交换,那么就是交换排序;如果每次比较完一个循环再交换,就是简单选择排序。

遍历整个序列,将最小的数放在最前面。

遍历剩下的序列,将最小的数放在最前面。重复第二步,直到只剩下一个数。

如何写成代码:

首先确定循环次数,并且记住当前数字和当前位置。

将当前位置后面所有的数与当前数字进行对比,小数赋值给key,并记住小数的位置。

比对完成后,将最小的值与第一个数的值交换。重复2、3步。

代码实现如下:

04

堆排序

对简单选择排序的优化。

将序列构建成大顶堆。

将根节点与最后一个节点交换,然后断开最后一个节点。

重复第一、二步,直到所有节点断开。

代码实现如下:

05

冒泡排序

一般不用。

将序列中所有元素两两比较,将最大的放在最后面。

将剩余序列中所有元素两两比较,将最大的放在最后面。

重复第二步,直到只剩下一个数。

如何写成代码:

设置循环次数。

设置开始比较的位数,和结束的位数。

两两比较,将最小的放到前面去。

重复2、3步,直到循环次数完毕。

代码实现如下:

06

快速排序

要求时间最快时。

选择第一个数为p,小于p的数放在左边,大于p的数放在右边。

递归的将p左边和右边的数都按照第一步进行,直到不能递归。

代码实现如下:

07

归并排序

速度仅次于快排,内存少的时候使用,可以进行并行计算的时候使用。

选择相邻两个数组成一个有序序列。

选择相邻的两个有序序列组成一个有序序列。

重复第二步,直到全部组成一个有序序列。

代码实现如下:

08

基数排序

用于大量数,很长的数进行排序时。

将所有的数的个位数取出,按照个位数进行排序,构成一个序列。

将新构成的所有的数的十位数取出,按照十位数进行排序,构成一个序列。

代码实现如下:

c++ 弧形面如何逆时针排序_这8种常见的Java排序算法,学算法必看!相关推荐

  1. layui表格 设置默认排序_改造 layui 表格组件实现多重排序

    layui 的表格组件目前只支持单列排序,在实际应用中并不能很好的支撑我们的业务需求.今天一时手痒,决定改造一番以支持多重排序. 实现思路也比较简单,只需要用一个数组来存放所有排序的列,再把这个数组传 ...

  2. mysql 自然排序_如何在mysql中实现自然排序

    背景 熟悉mysql的同学应该清楚,mysql在对字符串做order by排序时是按照字典序进行排序的,但是如果字符串中包含数字的话(我们称这种类型的字符串为alphanumeric),仅按照字典序的 ...

  3. dataframe 排序_如何对Pandas DataFrame进行自定义排序

    作者|B. Chen 编译|VK 来源|Towards Data Science Pandas DataFrame有一个内置方法sort_values(),可以根据给定的变量对值进行排序.该方法本身使 ...

  4. 数据库查询某一列大写转化小写字母表示_算法/开发 面试必看! 【数据库】面试题合集...

    本合集整理了计算机专业相关算法/开发面试中遇到的[数据库]相关面试题,后续会不断更新,有需要的小伙伴可以点赞or收藏随时查阅哦! Q:数据库四大特性ACID? Atomicity(原子性):一个事务( ...

  5. python字典怎么排序_如何对python的字典进行排序

    我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value.可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value ...

  6. arraylist怎么在mysql中排序_对ArrayList中对象元素进行排序

    rrayList中的元素进行排序,主要考查的是对util包中的Comparator接口和Collections类的使用. 实现Comparator接口必须实现compare方法,自己可以去看API帮助 ...

  7. react 数据库排序_如何使用React对表数据进行排序

    react 数据库排序 Often when you have a table with information you'd want to be able to sort the informati ...

  8. java 查询后 jsonobject key 排序_商品品牌业务之后台Java代码的编写

    今天是刘小爱自学Java的第146天. 感谢你的观看,谢谢你. 学习计划安排如下: 昨天实现了前端页面的编写以及发送请求,今天关于异步请求工具axios的简单说明. 关于商品品牌,后台代码的完整编写. ...

  9. python汉字排序_【IT专家】Python中文排序(转载)

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 Python 中文排序(转载) 2012/02/02 3793 Python 比较字符串大小时,根据的是 ord 函数得到的编码 值.基于它的排序 ...

最新文章

  1. 黑色星期五,外区亚马逊技嘉 GTX 1080 折合约3870元人民币
  2. Java黑皮书课后题第2章:2.9(物理:加速度)平均加速度定义为速度的变化量除以这个变化所用的时间,编写程序,提示用户输入以米/秒为单位的起始速度v0,以米/秒为单位的终止速度v1,显示平均加速度
  3. Spring MVC 源码分析
  4. VS2015中搭建lua环境
  5. JS:鼠标事件:实现鼠标移动到div背景颜色变换,移开还原
  6. Python/python/xpath爬虫--妙招网
  7. 全栈工程师就无敌吗?真的能做到个人即团队吗?
  8. 电影外观调色效果Lr预设
  9. 第三章 标准单元库(上)
  10. 51-20210316华为海思Hi3516DV300的linux系统编译2(SPI模式)
  11. 静态网页的广告banner部分
  12. C++编程第一课《编程是一门技术——认识C++》
  13. ubuntu20.04 root用户 登录桌面 / kubuntu20.04 root用户 登录桌面
  14. 我xp电脑桌面没有计算机图标不见了,XP电脑开机后桌面图标打开方式全部不见的恢复方法...
  15. android原生农场壁纸,Android 6.0高清壁纸下载-Android 6.0原生壁纸高清免费打包下载-东坡下载...
  16. 现代韦编三绝 新东方强浩老师自学新概念的故事
  17. Spring注入bean报错:Error creating bean with name的网上找不到的解决方案
  18. 飞飞cms模板,飞飞cms自适应模板,飞飞cms影视模板
  19. IAR STM32 函数和变量的绝对地址定位
  20. OpenGLES(七)使用GLSL实现滤镜效果之动态滤镜

热门文章

  1. 应用化学C4H12Si类四甲基硅结构的神经网络
  2. Java语言程序设计实验指导_《java语言程序设计》上机实验指导手册(4).doc
  3. bsc是指什么_掌握BSC,实现企业数字化管理
  4. python print换行_Python小白必备:教你几招如何装逼
  5. 24小时临时邮箱_免费临时邮箱和接码平台
  6. 微信小游戏游戏显示html控件,微信小程序中如何渲染html内容(代码示例)
  7. 微信小程序码buffer转为图片php,微信小程序将网络图片转成base64数据
  8. AD9910高速集成DDS芯片(verilog篇-串行模式篇-22个寄存器SPI通信周期控制)
  9. 人工智能成2020热搜专业,少儿编程未来可期!
  10. cadence原理图软件(orcad)层级原理图与位号