- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面试中的 10 的大排序算法总结
面试中的 10 大排序算法总结
前言
查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。
所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。
一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码。对这两种
排序的代码一定要信手拈来才行。还有插入排序、冒泡排序、堆排序、基数排序、桶排序等。面试官对于这些
排序可能会要求比较各自的优劣、各种算法的思想及其使用场景。还有要会分析算法的时间和空间复杂度。通
常查找和排序算法的考察是面试的开始,如果这些问题回答不好,估计面试官都没有继续面试下去的兴趣都没
了。所以想开个好头就要把常见的排序算法思想及其特点要熟练掌握,有必要时要熟练写出代码。
接下来我们就分析一下常见的排序算法及其使用场景。限于篇幅,某些算法的详细演示和图示请自行寻找详细
的参考。
冒泡排序
冒泡排序是最简单的排序之一了,其大体思想就是通过与相邻元素的比较和交换来把小的数交换到最前面。这
个过程类似于水泡向上升一样,因此而得名。举个栗子,对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:p冒泡排序算法实现/p
*@author 王旭
*@time 2016-3-3 下午8:54:27
*/
public class BubbleSort {
public static void bubbleSort(int[] arr) {
if(arr null || arr.length 0)
return ;
for(int i 0; iarr.length-1; i++) {
for(int j arr.length-1; ji; j--) {
if(arr[j] arr[j-1]) {
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:p简单选择排序算法的实现/p
*@author 王旭
*@time 2016-3-3 下午9:13:35
*/
public class SelectSort {
public static void selectSort(int[] arr) {
if(arr null || arr.length 0)
return ;
int minIndex 0;
for(int i 0; iarr.length-1; i++) { //只需要比较n-1次
minIndex i;
for(int j i+1; jarr.length; j++) { //从i+1开始比较,因为minIndex默认为i了,i就没必要比了。
if(arr[j] arr[minIndex]) {
您可能关注的文档
最近下载
- 高教版 职业道德与法治 第三课增强职业道德意识.pptx VIP
- 09BD2_10KV变配电装置国标 建筑图集 汇编 .docx VIP
- 肝硬化伴食管胃底静脉曲张破裂出血.pptx VIP
- 09SMS202-1 埋地矩形雨水管道及附属构筑物(混凝土模块砌体).docx VIP
- 《新药发现与开发---第一章概论》.ppt VIP
- 17.2019版NOUAP压疮指南解读 解读2019 压力性损伤和治疗临床实践指南.pptx VIP
- 卫星互联网行业报告:低轨卫星.pptx VIP
- 我的小手真干净(教学设计)-2024-2025学年地质版(2024)小学体育与健康一年级全一册.docx VIP
- 在线网课学习课堂《公文写作规范与技巧(陕西师范大学)》单元测试考核答案.docx VIP
- 钛合金Ti6Al4V铣削加工表面完整性与长疲劳寿命关联性探究.docx
文档评论(0)