排序

选择排序

基本思想

每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

简单理解:每个元素都和它后面的元素比较,只要后面的元素比它大就交换

选择排序的最终代码

以上4个for循环代码重复性较高,唯独不一样的地方就是每个for循环中都有一个使用多次的固定数字,第一个for的数

字0,第二个for的数字是1,第3个for的数字是2,第4个for的数字是3,这样可以写一个循环4次的for循环,假设循环循环

变量为就,只要j的取值>=0开始到<4结束,正好能获取0,1,2,3的数字,然后把上面的任意一个for循环作为循环体,把其

中的使用多次的固定数字用j替换掉即可.

发现5个数只需要排4趟,那么n个数需要排n-1趟,如果上面的循环中的变量j的范围固定写成<4,对于有6,7,...个数字的

数组排序是不同用的,所以4可以使用数组的长度array.length-1 = 5-1 来表示

排序前的内容:[3, 4, 5, 6, 7]

排序后的内容:[7, 6, 5, 4, 3]

总结

1.选择排序的原理:每个元素都和它后面的元素比较,只要后面的元素比它大就交换,掌握了这个原理,选择排序非常简单

2.通过画图分析,5个数字排4趟,n数字排n-1趟,而外层的for循环代表的是循环的趟数,所以外层循环的结束条件是array.length-1,但是写array.length代码也没有问题,比如5个数字在第4趟都已经排好了,再进行第5趟排序,也不会影响程序的结果.外层循环的变量的初始值要从0开始,因为选择排序的原理就是每个元素和它后面的所有元素比较,既然要获取所有元素,那索引必须从0开始.

3.内层循环变量的初始值写成int i = j+1是为了减少比较的次数,提高效率,其实写成int i = 0,也不会影响程序运行的结果,只是多比较了很多次.但是内层循环的结束条件i

冒泡排序

基本思想

核心思想是从头开始让相邻的两个元素进行比较,符合条件就交换位置,这样就把最大值或者最小值放到数组的最后面了;接着再从头开始两两比较交换,直到把最大值或者最小值放到数组的倒数第二位。(即不需要与最后一位数进行对比).....以此类推,直到排序完成。

简单理解: 每次都从第一个元素开始(索引0),向后两两比较,只要后面的比前面的大,就交换(从大到小)

冒泡排序的最终代码

以上4个for循环代码重复性较高,唯独不一样的地方就是每个for循环结束条件最后减的数字不同,第一个for循环结束条件减的数字是0,第二个for循环结束条件减的数字是1,第3个for循环结束条件减的数字是2,第4个for循环结束条件减的数字是3,这样可以写一个循环4次的for循环,假设循环变量为j,只要j的取值>=0开始到<4结束,正好能获取0,1,2,3的数字,然后把上面的任意一个for循环作为循环体,把该循环体中for循环的结束条件中最后减掉的数字用j替换掉即可.发现5个数只需要排4趟,那么n个数需要排n-1趟,如果上面的循环中的变量j的范围固定写成<4,对于有6,7,...个数字的数组排序是不通用的,所以4可以使用数组的长度array.length-1 = 5-1 来表示

排序前的内容:[3, 4, 5, 6, 7]

排序后的内容:[7, 6, 5, 4, 3]

1.冒泡排序的原理:每次都从第一个元素开始(索引0),向后两两比较,只要后面的比前面的大,就交换(从大到小)

2.通过画图分析,5个数字排4趟,n数字排n-1趟,而外层的for循环代表的是循环的趟数,所以外层循环的结束条件是array.length-1,但是写array.length代码也没有问题,比如5个数字在第4趟都已经排好了,再进行第5趟排序,也不会影响程序的结果.

3.内层循环变量的初始值写成int i =0,是为了保证每次都从第一个元素开始(索引为0)向后两两比较.但是内层循环的结束条件i

java排序 面试题_java【排序】面试题相关推荐

  1. java综合面试题_JAVA 综合面试题 PDF 下载

    主要内容: Java面试题整理 Java面向对象 1. super()与this()的区别? This():当前类的对象,super父类对象.Super():在子类访问父类的成员和行为, 必须受类继承 ...

  2. JAVA工程师定向招聘_Java工程师面试题整理[社招篇]

    http://blog.csdn.net/jackfrued/article/details/44921941 1.面向对象的特征有哪些方面? 2.访问修饰符public,private,protec ...

  3. java校招笔试题目_Java校招笔试题

    2020校招笔试题答案及评分标准 满分100分 时间1小时 一.简答题: (5分)写出你用过的linux命令,举例说明其中几个的具体用法. 答案:略.评分标准:正确五个,1分一个. (5分)写出TCP ...

  4. java面试全套清单_Java 全套面试题 PDF 下载

    主要内容: Java 最常见 面试题全解析:面试必备 序言 在本篇文章开始之前,我想先来回答一个问题:我为什么要写这样一篇关于面试的文章?原因有三个:第一,我想为每一个为梦想时刻准备着的"有 ...

  5. java机试 数据结构_Java数据结构面试题

    1.栈和队列的共同特点是(只允许在端点处插入和删除元素) 4.栈通常采用的两种存储结构是(线性存储结构和链表存储结构) 5.下列关于栈的叙述正确的是(D) A.栈是非线性结构B.栈是一种树状结构C.栈 ...

  6. java线程实例题_java线程相关试题实例源码代码

    java线程相关试题实例源码代码. /** * 计算输出其他线程锁计算的数据 */ class ThreadA { public static void main(String[] args) { T ...

  7. Java排序算快速排序_Java排序算法 [快速排序]

    package cn.com.dom4j.sort; public class QuickSort { /** 快速排序 在 Java中, 快速排序被用作基本数据类型的排序 (当然, 不只快速排序一种 ...

  8. java高级mysql面试题_Java高级面试题

    一.基础知识: 1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList:HashSet,TreeSet): 2)HashMap的底层实现,之后会问Co ...

  9. java页面间面向对象的方法面试题_JAVA面向对象面试题带答案(墙裂推荐)

    1) 在Java中,如果父类中的某些方法不包含任何逻辑,并且需要有子类重写,应该使用(c)关键字来申明父类的这些方法. a) Finalc b) Static c) Abstract d) Void ...

  10. java 关于集合的笔试题_Java集合面试题(一)

    1.Collection和Collections的差别 java.util.Collection 是一个集合接口,Collection接口在Java类库中有非常多详细的实现.比如List.Set ja ...

最新文章

  1. analyzing problems
  2. 高级考题_经济师考过就满足?还有这个高级职称等你拿!
  3. ios调用restful接口_做iOS上最好的REST API测试App
  4. js调用百度地图搜索功能
  5. IDEA SpringBoot多模块项目搭建详细过程(转)
  6. spring实例化前的准备操作
  7. Ubuntu添加开机自动运行程序
  8. Weighted Boxes Fusion 源码解析
  9. Kotlin版本的新闻类APP 简闻
  10. eclipse写程序从hdfs上下载文件到本地报错:at org.apache.hadoop.util.Shell.runCommand
  11. 利用谷歌镜像网站编辑Latex的参考文献与doi链接
  12. DG8FV-B9TKY-FRT9J-6CRCC-XPQ4G
  13. 移位操作---左移和右移
  14. SEASKY开源机械键盘
  15. 阿里图标库在旧有的iconfont中添加新的图标
  16. 高德搜索POI:以获取小区数据为例
  17. 基于python马蜂窝网的旅游景点推荐系统
  18. 艺术字体怎样快速生成?在线设计艺术字体的方法
  19. SQLMAP工具详解
  20. 趣链科技张帅:多种技术交叉融合助推区块链应用开拓全新局面 | FBEC 2019专访...

热门文章

  1. dedecms嵌套栏目
  2. 经典算法面试题目-判断s2是否是s1的旋转字符串(1.8)
  3. Java之Annotation学习
  4. html5 手机上传图片
  5. 使用功能开关更好地实现持续部署
  6. 三、Oracle的简单查询
  7. C#温故而知新学习系列之面向对象编程—构造函数(七)
  8. BZOJ2428[HAOI2006]均分数据——模拟退火
  9. WSUS3.0的部署及安装
  10. Android零基础入门第25节:最简单最常用的LinearLayout线性布局