#####1.冒泡排序

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端。 #####2.选择排序 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。

  • 每一轮遍历,都去寻找一个最小值,然后把当前的位置与最小值交换。 这样下来得到的是一组 从小到大的排序。 #####3.插入排序

插入排序基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

  • 先拿出第二个数(然后依次往后拿),如果发现前面有比它小的数字,该元素后移。 可以看下动态图先做了解 点击查看排序动态图模拟网 也特别感谢这位作者 ###1.冒泡排序 略,很常见的排序
package com.fantj.dataStruct.simplesort;/*** 冒泡排序* Created by Fant.J.* 2017/12/20 19:43*/
public class BubbleSort {//小值往前排public static void sort(long [] arr){long tmp = 0;for (int i = 0;i < arr.length;i++){for (int j = arr.length-1;j>i;j--){if (arr[j]<arr[j-1]){tmp = arr[j];arr[j] = arr[j-1];arr[j-1] = tmp;}}}}
}
复制代码

###2.选择排序 每一轮遍历,都去寻找一个最小值,然后把当前的位置与最小值交换。 这样下来得到的是一组 从小到大的排序。

package com.fantj.dataStruct.simplesort;/*** 选择排序* Created by Fant.J.* 2017/12/20 19:56*/
public class SelectionSort {public static void sort(long []arr){int k = 0;long temp = 0;for (int i = 0;i<arr.length-1;i++){k = i;for (int j = i;j<arr.length;j++){if (arr[j] < arr[k]){//拿到最小值对应的indexk = j;}}//将k(最小值)和i(当前值)交换temp = arr[i];arr[i] = arr[k];arr[k] = temp;}}
}
复制代码

###3.插入排序 拿出第二个数,如果发现前面有比它小的数字,交换它们。

package com.fantj.dataStruct.simplesort;/*** Created by Fant.J.* 2017/12/20 20:56*/
public class InsertSort {public static void sort(long [] arr){int i, j;long target;//假定第一个元素被放到了正确的位置上//这样,仅需遍历1 - n-1for (i = 1; i < arr.length; i++){j = i;target = arr[i];//如果当前值小于前面的值,就交换它们while (j > 0 && target < arr[j - 1]){arr[j] = arr[j - 1];j--;}arr[j] = target;}}
}复制代码

git地址

Java数据结构与算法(二) 简单排序相关推荐

  1. JAVA数据结构与算法【简单介绍】

    前几天去面一个大厂,面试官特别好,面试官说到,我们的学习不能本末倒置,数据结构和算法是程序的基础,如果数据结构你没有学好,你真正意义上不算会写代码.你的代码是各处粘贴,杂乱无章的. 由于现在大多用JA ...

  2. 数据结构与算法—二叉排序(查找)树

    目录 前言 树 二叉树 二叉排序(搜索)树 概念 构造 主要方法 findmax(),findmin() isContains(int x) insert(int x) delete(int x) 完 ...

  3. Java数据结构与算法 二

    树结构基础部分 树 数组存储方式 优点:通过下标方式访问元素,速度快.对于有序数组,可使用二分查找提高检索速度. 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 链式存储方式 ...

  4. Java数据结构与算法(六) 希尔排序

    ###一.希尔排序的产生 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法.该方法因DL.Shell于1959年提 ...

  5. Java数据结构和算法( 二 ) ## 数组

    目录 数组综述 Java中的数组 创建数组 访问数组 初始化数组 有序数组 线性查找 二分查找 有序数组的优缺点 大O表示法(order of) 为什么不用数据解决一切 - 小结 数组综述 数组是最广 ...

  6. 【数据结构与算法】高级排序(希尔排序、归并排序、快速排序)完整思路,并用代码封装排序函数

    本系列文章[数据结构与算法]所有完整代码已上传 github,想要完整代码的小伙伴可以直接去那获取,可以的话欢迎点个Star哦~下面放上跳转链接 https://github.com/Lpyexplo ...

  7. 【笔记】Java数据结构与算法

    [笔记]Java数据结构与算法 文章目录 [笔记]Java数据结构与算法 1.八大排序应用场景 2.未完待续-- 1.八大排序应用场景 冒泡排序:优化后的冒泡排序可用于当数据已经基本有序,且数据量较小 ...

  8. Java数据结构与算法(二)

    Java数据结构与算法(二) 第六章 递归 1 递归应用场景 2 递归的概念 3 递归调用机制 4 递归能解决什么样的问题 5 递归需要遵守的重要规则 6 递归-迷宫问题 6.1 迷宫问题 6.2 代 ...

  9. Java 数据结构与算法系列之冒泡排序

    一.前言 相信大部分同学都已经学过数据结构与算法这门课了,并且我们可能都会发现一个现象就是我们所学过的数据结构与算法类的书籍基本都是使用 C 语言来写的,好像没见过使用 Java 写的数据结构与算法. ...

最新文章

  1. 友情链接交换看的不是“真友情”!
  2. SQL Server 2012 开发新功能 序列对象(Sequence)
  3. Spring-data-jpa和mybatis的比较及两者的优缺点?
  4. zcmu1713(模拟)
  5. 解决win7 64位无法进入debug的问题
  6. SkinSharp For Visual C++
  7. 使用AspectCore动态代理
  8. 逆波兰式数学表达式求解
  9. Vue-Treeselect 的下拉菜单不出Table的框
  10. 《深入浅出设计模式》小结
  11. ABAQUS常用量纲
  12. 岩土工程颗粒流软件PFC6.0技巧——按计算时间导出数据、图像及保存文件
  13. **一些常用的字体英文名**
  14. 微信小程序之实现地图定位(使用腾讯位置服务插件)
  15. Roon 1.8(806) for Windows
  16. 微信SDK开发学习第一课
  17. 【P45】直流单电源24V JLH 1969 经典耳放参数优化
  18. C# HtmlAgilityPack 页面结构解析
  19. 酒店公共广播背景音乐-基于互联网+的酒店IP网络广播系统设计
  20. 免费申请基于飞腾硬件平台上的麒麟云试用!

热门文章

  1. c语言里面你不知道的break与switch,contiune的用法
  2. .eslintrc.js相关配置
  3. (转载)Android项目实战(二十七):数据交互(信息编辑)填写总结
  4. MyBatis 【返回自增id】
  5. 路直路弯,面对挫折脚步不放慢
  6. 今天心情好,发首我喜欢的歌---天黑黑
  7. 深度学习之----各种学习策略
  8. 浅谈C#中virtual和abstract的区别
  9. 斐波那契数列(递归和非递归实现)
  10. vue-cli history 本地开发刷新页面丢失_react 开发入门