java排序 面试题_java【排序】面试题
排序
选择排序
基本思想
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
简单理解:每个元素都和它后面的元素比较,只要后面的元素比它大就交换
选择排序的最终代码
以上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【排序】面试题相关推荐
- java综合面试题_JAVA 综合面试题 PDF 下载
主要内容: Java面试题整理 Java面向对象 1. super()与this()的区别? This():当前类的对象,super父类对象.Super():在子类访问父类的成员和行为, 必须受类继承 ...
- JAVA工程师定向招聘_Java工程师面试题整理[社招篇]
http://blog.csdn.net/jackfrued/article/details/44921941 1.面向对象的特征有哪些方面? 2.访问修饰符public,private,protec ...
- java校招笔试题目_Java校招笔试题
2020校招笔试题答案及评分标准 满分100分 时间1小时 一.简答题: (5分)写出你用过的linux命令,举例说明其中几个的具体用法. 答案:略.评分标准:正确五个,1分一个. (5分)写出TCP ...
- java面试全套清单_Java 全套面试题 PDF 下载
主要内容: Java 最常见 面试题全解析:面试必备 序言 在本篇文章开始之前,我想先来回答一个问题:我为什么要写这样一篇关于面试的文章?原因有三个:第一,我想为每一个为梦想时刻准备着的"有 ...
- java机试 数据结构_Java数据结构面试题
1.栈和队列的共同特点是(只允许在端点处插入和删除元素) 4.栈通常采用的两种存储结构是(线性存储结构和链表存储结构) 5.下列关于栈的叙述正确的是(D) A.栈是非线性结构B.栈是一种树状结构C.栈 ...
- java线程实例题_java线程相关试题实例源码代码
java线程相关试题实例源码代码. /** * 计算输出其他线程锁计算的数据 */ class ThreadA { public static void main(String[] args) { T ...
- Java排序算快速排序_Java排序算法 [快速排序]
package cn.com.dom4j.sort; public class QuickSort { /** 快速排序 在 Java中, 快速排序被用作基本数据类型的排序 (当然, 不只快速排序一种 ...
- java高级mysql面试题_Java高级面试题
一.基础知识: 1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList:HashSet,TreeSet): 2)HashMap的底层实现,之后会问Co ...
- java页面间面向对象的方法面试题_JAVA面向对象面试题带答案(墙裂推荐)
1) 在Java中,如果父类中的某些方法不包含任何逻辑,并且需要有子类重写,应该使用(c)关键字来申明父类的这些方法. a) Finalc b) Static c) Abstract d) Void ...
- java 关于集合的笔试题_Java集合面试题(一)
1.Collection和Collections的差别 java.util.Collection 是一个集合接口,Collection接口在Java类库中有非常多详细的实现.比如List.Set ja ...
最新文章
- analyzing problems
- 高级考题_经济师考过就满足?还有这个高级职称等你拿!
- ios调用restful接口_做iOS上最好的REST API测试App
- js调用百度地图搜索功能
- IDEA SpringBoot多模块项目搭建详细过程(转)
- spring实例化前的准备操作
- Ubuntu添加开机自动运行程序
- Weighted Boxes Fusion 源码解析
- Kotlin版本的新闻类APP 简闻
- eclipse写程序从hdfs上下载文件到本地报错:at org.apache.hadoop.util.Shell.runCommand
- 利用谷歌镜像网站编辑Latex的参考文献与doi链接
- DG8FV-B9TKY-FRT9J-6CRCC-XPQ4G
- 移位操作---左移和右移
- SEASKY开源机械键盘
- 阿里图标库在旧有的iconfont中添加新的图标
- 高德搜索POI:以获取小区数据为例
- 基于python马蜂窝网的旅游景点推荐系统
- 艺术字体怎样快速生成?在线设计艺术字体的方法
- SQLMAP工具详解
- 趣链科技张帅:多种技术交叉融合助推区块链应用开拓全新局面 | FBEC 2019专访...