- 19
- 0
- 约2.28万字
- 约 28页
- 2021-10-15 发布于安徽
- 举报
PAGE 2
第 PAGE 19页
面试时的Java数据结构与算法
查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码。对这两种排序的代码一定要信手拈来才行。还有插入排序、冒泡排序、堆排序、基数排序、桶排序等。
面试官对于这些排序可能会要求比较各自的优劣、各种算法的思想及其使用场景。还有要会分析算法的时间和空间复杂度。通常查找和排序算法的考察是面试的开始,如果这些问题回答不好,估计面试官都没有继续面试下去的兴趣都没了。所以想开个好头就要把常见的排序算法思想及其特点要熟练掌握,有必要时要熟练写出代码。
接下来我们就分析一下常见的排序算法及其使用场景。限于篇幅,某些算法的详细演示和图示请自行寻找详细的参考。
冒泡排序
冒泡排序是最简单的排序之一了,其大体思想就是通过与相邻元素的比较和交换来把小的数交换到最前面。这个过程类似于水泡向上升一样,因此而得名。举个栗子,对5,3,8,6,4这个无序序列进行冒泡排序。首先从后向前冒泡,4和6比较,把4交换到前面,序列变成5,3,8,4,6。同理4和8交换,变成5,3,4,8,6,3和4无需交换。5和3交换,变成3,5,4,8,6,3.这样一次冒泡就完了,把最小的数3排到最前面了。对剩下的序列依次冒泡就会得到一个有序序列。冒泡排序的时间复杂度为O(n^2)。
实现代码:
/**
*@Description:冒泡排序算法实现
*@author 王旭
*/
public class BubbleSort {
public static void bubbleSort(int[] arr) {
if(arr == null || arr.length == 0)
return ;
for(int i=0; i) {
for(int j=arr.length-1; ji; j--) {
if(arr[j] ]) {
swap(arr, j-1, j);
}
}
}
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
选择排序
选择排序的思想其实和冒泡排序有点类似,都是在一次排序后把最小的元素放到最前面。但是过程不同,冒泡排序是通过相邻的比较和交换。而选择排序是通过对整体的选择。举个栗子,对5,3,8,6,4这个无序序列进行简单选择排序,首先要选择5以外的最小数来和5交换,也就是选择3和5交换,一次排序后就变成了3,5,8,6,4.对剩下的序列一次进行选择和交换,最终就会得到一个有序序列。其实选择排序可以看成冒泡排序的优化,因为其目的相同,只是选择排序只有在确定了最小数的前提下才进行交换,大大减少了交换的次数。选择排序的时间复杂度为O(n^2)。
实现代码:
/**
*@Description:简单选择排序算法的实现
*@author 王旭
*/
public class SelectSort {
public static void selectSort(int[] arr) {
if(arr == null || arr.length == 0)
return ;
int minIndex = 0;
for(int i=0; i//只需要比较n-1次
minIndex = i;
for(int j=i+1; j//从i+1开始比较,因为minIndex默认为i了,i就没必要比了。
if(arr[j] arr[minIndex]) {
minIndex = j;
}
}
if(minIndex != i) { //如果minIndex不为i,说明找到了更小的值,交换之。
swap(arr,
您可能关注的文档
- 免修不免考申请及免积分 NX5编程精解与实例-2.doc
- 面试表格两份.doc
- 面试情景对话及面试英语情景对话.doc
- 面试销售岗常见问题及面试邀约流程与话术.doc
- 面试英语销售英语等实用商务英语总结及面试情景对话.doc
- 面瘫(面神经炎)中医临床路径及面瘫病(面神经炎)中医诊疗方案.doc
- 面向对象程序设计(C++)及面向对象设计与分析 图书管理系统.doc
- 面向对象分析与设计试题B卷及面向自动化装配的产品设计.doc
- 苗木进场报验单及苗圃规划建设与管理.doc
- GB/Z 112-2026中医药 中西医结合临床术语系统分类框架.pdf
- JJG 543-2026心电图机检定规程.pdf
- 《JJG 543-2026心电图机检定规程》.pdf
- GB/T 47045-2026乘用车车载信息优先级的确定方法.pdf
- 《GB/T 12668.2-2025调速电气传动系统 第2部分:一般要求 交流调速电气传动系统额定值的规定》.pdf
- 中国国家标准 GB/T 12668.2-2025调速电气传动系统 第2部分:一般要求 交流调速电气传动系统额定值的规定.pdf
- 中国国家标准 GB/T 31487.1-2025直流融冰装置 第1部分:系统设计.pdf
- GB/T 12668.2-2025调速电气传动系统 第2部分:一般要求 交流调速电气传动系统额定值的规定.pdf
- GB/T 31487.1-2025直流融冰装置 第1部分:系统设计.pdf
- 《GB/T 31487.1-2025直流融冰装置 第1部分:系统设计》.pdf
- 《GB/T 31418-2025道路交通信号控制系统术语》.pdf
最近下载
- 2026年国考《申论》(副省级)试卷答案解析.pdf VIP
- 火力发电工程建设标准强制性条文执行表 土建分册.pdf VIP
- 2篇文:在带头固本培元、增强党性方面等“五个带头”对照检查材料2026年.docx VIP
- 过敏性紫癜ppt(共35张PPT).pptx VIP
- 基于BIM的ZN花园14号住宅楼工程清单与招标控制价编制.doc VIP
- 基于BIM工程量清单的编制.docx VIP
- 带头固本培元、增强党性方面存在的问题及下一步整改措施(“五个带头”8篇精选).docx VIP
- 四川省建筑工程劳动量定额、时间定额和主要施工机械台班产量定额.pdf
- 十八项护理核心制度最新.docx VIP
- 采购部门岗位职责与工作流程规范.docx VIP
原创力文档

文档评论(0)