选择排序

步骤一、选取一组数据中起始位置(下标)上的数据,和其后的各个位置(下标)上数据进行比较;如果起始位置(下标)上的数据大(升序)或小(降序),就将两个位置上的数据进行交换;这样完成一轮比较之后,起始位置上的数据就是最小或最大了
步骤二、再次选取第二个位置上的数据,和其后各个位置上的数据进行比较。如此重复,就可将数据进行排序了。

实例:
package algorithm.sort;
/*** 演示选择排序算法* @author 学霸联盟 - 赵灿*/
public class SelectionSortDemo {public static void main(String[] args) {//创建两个数组int[] arr1 = { 3, 5, 1, 4, 2 };/** 选择排序* 顾名思义,从数组中按照顺序一个一个的选出来* 升序排序:* 第一步取出数组中下标为0的值,和后面每个值比较* 如果小标为0值大于后面的值,则互换两个值,继续和后面的比* 比完之后就可以保证下标为0的位置保持最小的值了* 在取下标为1的值和后面的值一个一个比较,以此类推*/for (int i = 0; i < arr1.length - 1; i++) {//取到倒数第二个值即可,最后一个后面没有其他值了,也就无需比较了/** 内层循环拿后面的每一个值和外层循环取到的值比较* 所以外层循环取下标为0处的值,这里第一次应该拿下标为1位置的值* 外层循环取下标为1处的值,这里第一次应该拿下标为2位置的值* 以此类推,得到j初始化时应该等于i+1*/for (int j = i+1; j < arr1.length; j++) {//判断大小if(arr1[i] > arr1[j]){//注意:这里交换的是数组中的值int temp = arr1[i];arr1[i] = arr1[j];arr1[j] = temp;}}}System.out.println("--- 选择排序法排序后 ---");for (int i = 0; i < arr1.length; i++) {System.out.print(arr1[i] + "  ");}}
}
运行结果:
--- 选择排序法排序后 ---
1  2  3  4  5  

冒泡排序

步骤一:选取一组数据中起始位置(下标)上的数据,和第二个位置上的数据进行比较,如果起始位置(下标)上的数据大(升序)或小(降序),就将两个位置上的数据进行交换;然后使用第二个位置上的数据,和第三个位置上的数据进行比较;第三个和第四个...直至最后一个,这样完成一轮比较,就使最后一个位置上的数据最大或最小
步骤二:仍然是选取起始位置上的数据,和第二个位置上的数据进行比较,直至倒数第二个数据;
以此类推,直至只剩下第一个和第二个数据进行比较,比较完成后结束。

实例:
package algorithm.sort;
/*** 演示冒泡排序算法* @author 学霸联盟 - 赵灿*/
public class BubbleSortDemo {public static void main(String[] args) {//创建两个数组int[] arr1 = { 3, 5, 1, 4, 2 };/** 冒泡排序* 顾名思义,像冒泡一样,越往上越大* 升序排序:* 第一步取出数组中下标为0的值,和后面相邻的值比较* 如果后面的值小,交换两个值(相当于向上冒一个位置)* 交换后继续用这个大的值和后面的值进行比较* 以此类推,第一遍比较完成后,最大的值就在最后一个下标位置了*/for (int i = arr1.length - 1; i > 0 ; i--) {//外层循环的作用是标识冒泡的结束位置,结束位置是依次向前移动的/** 每次都从第一个值开始往上冒泡* 知道冒至外层循环标识的结束位置为止*/for (int j = 0; j < arr1.length - 1; j++) {//判断相邻两个值大小if(arr1[j] > arr1[j + 1]){//注意:这里交换的是数组中的值int temp = arr1[j];arr1[j] = arr1[j + 1];arr1[j + 1] = temp;}}}System.out.println("--- 冒泡排序法排序后 ---");for (int i = 0; i < arr1.length; i++) {System.out.print(arr1[i] + "  ");}}
}
运行结果:
--- 冒泡排序法排序后 ---
1  2  3  4  5  

排序算法有很多很多,对于初学者,至少至少也要理解和熟练应用其中一种。

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/ixueba/p/4725159.html

I学霸官方免费教程二十八:Java排序算法之选择排序和冒泡排序相关推荐

  1. java集合课程,I学霸官方免费课程三十三:Java集合框架之Map集合

    I学霸官方免费教程三十三:Java集合框架之Map集合 Map接口 Map集合采用键值对(key-value)的方式存储数据,其中键不可以重复.值可以重复. 常用类有HashMap.TreeMap和P ...

  2. MATLAB可视化实战系列(二十八)-贪心算法求快速平方根倒数算法中的“魔术数字”【含matlab源代码】

    前言 快速平方根倒数算法(Fast InvSqrt)是一种快速计算平方根的倒数的算法,常用于向量标准化运算,在光照渲染中有重要应用.此算法最早可能是于90年代前期由SGI所发明,后来于1999年在&l ...

  3. 十大经典排序算法之选择排序及其优化

    一.简单选择排序 1.基本思想: 在长度为N的无序数组中,第一次遍历n-1个数,找到最小的数值与第一个元素交换: 第二次遍历n-2个数,找到最小的数值与第二个元素交换: ... 第n-1次遍历,找到最 ...

  4. I学霸官方免费教程八:Java基础之方法(函数)

    方法(C语言中称为函数) 方法:由多条语句组成,可以重复使用的,完成一个或多个功能的代码集合:方法只能声明在类中,不能声明在其他方法中 语法格式: [访问修饰符] 返回值类型 方法名([参数列表]){ ...

  5. 【Python简明教程二十八】PIP

    1 概述 PIP 是 Python 包或模块的包管理器. 注释:如果使用的是 Python 3.4 或更高版本,则默认情况下会包含 PIP. 2 包(Package) 包中包含模块所需的所有文件. 模 ...

  6. Word控件Spire.Doc 转换教程(二十八):将 Word 转换为 PCL

    PCL 文件是以打印机命令语言(通常称为 PCL)页面描述语言创建的数字打印文档.从v7.1.19 开始,Spire.Doc 支持将 word 文档转换为 PCL.PCL文件的标准有很多种:这里的 P ...

  7. Spring Boot入门教程(二十八): 校验(validation)

    validation主要是校验用户提交的数据的合法性,比如是否为空,密码是否符合规则,邮箱格式是否正确等等,校验框架比较多,用的比较多的是hibernate-validator, 也支持国际化,也可以 ...

  8. 二十八、路由算法和路由协议

    文章目录 1.路由算法 2.路由选择协议 THE END 1.路由算法 \qquad 路由器本身自己会有一个路由表/转发表,其形式如下所示: \qquad 最佳路由: "最佳"只能 ...

  9. 选择排序算法流程图_C#实现——十大排序算法之选择排序

    选择排序法 1.工作原理(算法思路) 给定一个待排序数组,找到数组中最小的那个元素 如果最小元素不是待排序数组的第一个元素,则将其和第一个元素互换 在剩下的元素中,重复1.2过程,直到排序完成. 2. ...

最新文章

  1. 晚上,睡前只需1分钟,一觉到天亮!
  2. url参数传递 java_URL中文参数传递问题
  3. ftp服务----基于虚拟用户的创建
  4. leetcode算法题--打家劫舍II
  5. PowerDesigner中Stereotype的创建图解
  6. Flutter 制作一个具有酷炫液体滑动效果的酷炫入门页面
  7. Python多任务(4.多线程--Python中的互斥锁和死锁)
  8. perform指标分析_performace 监控统计
  9. 如何用Java创建不可变的Map
  10. 权限管理(1):简介
  11. 软件工程师 算法工程师_如何像软件工程师一样撰写文章
  12. 大数据技术原理与应用 第三版 林子雨 期末复习(一)大数据概述 第一章 P2
  13. 个人打造sm2258xt固态U盘全过程分享,附量产工具和教程
  14. 网站上传服务器及安装包,如何上传安装包到服务器
  15. simulink 快捷键 运行_高效使用simulink
  16. Nvidia Tesla M40 装机保姆教程
  17. Stimulsoft报表使用心得
  18. 我xp电脑桌面没有计算机图标不见了,XP电脑开机后桌面图标打开方式全部不见的恢复方法...
  19. C# 文本框定位到文本末尾
  20. HEVC区域划分Slice Tile CTU CU PU TU

热门文章

  1. android return 如何跳出两个循环_PHP跳出循环的方法
  2. oracle 包和包体禁用,Oracle包和包体以及与非包体定义函数、过程的区别
  3. 装文件存储服务器Fastdfs
  4. Kubernetes 架构与设计
  5. Win10文件管理器那些你不知道的秘密
  6. JavaScript基础函数的配置对象Configuration Objects(020)
  7. eclipse部署web没部署成功的问题
  8. 欧美民用航空器 DO-178B标准
  9. Window系统下 MongoDB 下载 和 安装
  10. 20款免费响应式的 HTML5 网站模板下载