面试必考题目+各种排序实例及点评
更新时间:2024-01-03 18:20:01 阅读量: 教育文库 文档下载
- 面试题目重要性排序题推荐度:
- 相关推荐
1.按平均时间将排序分为4类;
A.平方阶O(n^2)排序:一般为简单的排序,例如直接插入、直接选择和冒泡排序;
B.线性对数阶O(nlgn)排序:如快速、堆和归并排序;
C.O(n^m)阶排序:m位于0和1之间的常数,即0 A.若n较小时(n<50),可采用直接插入或直接选择排序。 当记录规模较小时,直接插入排序较好。否则因为直接选择移动的记录数少于直接插入,应直接选择选择排序为宜。 B.若文件的初始状态基本有序(指正序),则应选择直接插入排序,冒泡排序或随机的快速排序为宜。 C.若n较大时,应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。 快速排序被认为是目前基于比较的内部排序中最好的方法。当待排序的关键字随机分布时,快速排序的平均时间最短。 堆排序所需的辅助空间少于快速排序,并且不会出现快速排序可能出现的最坏情况。这两种排序都是不稳定的。 若要求排序稳定,则可选用归并排序。 shell排序:分组的直接插入排序,在n比较大的时候较直接插入排序有较大的改进,它是不稳定的。最好的时间复杂度是O(n),最坏的是O(n^2)。 3.插入排序、冒泡排序、归并排序是稳定的,选择排序、希尔排序、快速排序、堆排序时不稳定的 4.各种排序算法如下: a. shell排序:分组的直接插入排序,在n比较大的时候较直接插入排序有较大的改进,它是不稳定的。最好的时间复杂度是O(n),最坏的是O(n^2)。 #include void shell_sort(int a[],int len) { int h,i,j,temp; for(h=len/2;h>0;h=h/2) { for (i=h;i void print_array(int a[],int len) { for (int i=0;i b.直接插入排序: #include void insert_sort(int a[],int len) { int i,j,temp; for (i=1;i } void print_array(int a[],int len) { for (int i=0;i c.交换排序中的冒泡排序:是就地排序,且是稳定的,由于他的记录移动次数较多,故平均时间性能比直接插入排序要差的多,最好的时间复杂度是O(n),最差是O(n^2),平均时间复杂度是O(n^2) #include void bubble_sort(int a[],int len) { int i,j,temp; for (i=0;i void print_array(int a[],int len) { for (int i=0;i } cout< void main() { int a[]={7,3,5,8,9,1,2,4,6}; cout<<\ print_array(a,9); bubble_sort(a,9); cout<<\ print_array(a,9); } d.交换排序中的quick_sort 是一种不稳定的排序方法,平均时间复杂度是O(n*lgn/lg2) 最差情况时间复杂度是O(n^2) #include void quick_sort(int a[],int low,int high) { int i,j,pivot; if(low void print_array(int a[],int len) { for (int i=0;i } cout< void main() { int a[]={54,38,96,23,15,72,60,45,83}; cout<<\ print_array(a,9); quick_sort(a,0,8); cout<<\ print_array(a,9); } e.直接选择排序: #include void select_sort(int a[],int len) { int i,j,x,l; for (i=0;i void print_array(int a[],int len) { for (int i=0;i cout<<\ print_array(a,9); select_sort(a,9); cout<<\ print_array(a,9); } f.归并排序: #include void Merge(int a[],int tmp[],int lPos,int rPos,int rEnd) { int i,lEnd,NumElements,tmpPos; lEnd=rPos-1; tmpPos=lPos; NumElements=rEnd-lPos+1; while (lPos<=lEnd&&rPos<=rEnd) { if (a[lPos]<=a[rPos]) tmp[tmpPos++]=a[lPos++]; else tmp[tmpPos++]=a[rPos++]; } while(lPos<=lEnd) tmp[tmpPos++]=a[lPos++]; while(rPos<=rEnd) tmp[tmpPos++]=a[rPos++]; for(i=0;i void msort(int a[],int tmp[],int low,int high) { if (low>=high) return; int middle=(low+high)/2; msort(a,tmp,low,middle); msort(a,tmp,middle+1,high); Merge(a,tmp,low,(middle+1),high); } void merge_sort(int a[],int len) { int *tmp=NULL; tmp=new int[len]; if (tmp!=NULL) { msort(a,tmp,0,len-1); delete[]tmp; } } void print_array(int a[],int len) { for (int i=0;i
正在阅读:
面试必考题目+各种排序实例及点评01-03
高等流体力学试题05-23
2021国开大学电大专科《农村经济与管理》期末试题及答案(试卷号:2113)05-14
.Euit-en-1009190604-11
提档函02-07
资源税改革再启04-14
南京工业大学机械设计基础09-19
一、判断题(20道题、每题1分共20分)09-23
七年级数学上册教案09-26
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 必考
- 实例
- 排序
- 题目
- 面试
- 点评
- 各种
- 铝镁锰金属屋面技术要求
- 食品工艺学试题
- 浙江省人事考试中心文件浙考发〔2006〕31号关于做好2006年度全国
- 文明施工安全技术措施 - 图文
- 如何编辑epidata文件
- 广西壮族自治区人民政府关于发布广西壮族自治区国家行政机关公
- 2018届高三作文审题立意训练
- 山东省济南市2016-2017学年高一第二学期期末考试历史试卷(含解析)
- CASP软件使用情况
- GWD - CR - 大全 附解释
- 供热工程课程设计任务书
- 钢结构安装钢丝绳使用技术交底(中建二局安装经典范本) - 图文
- 《EBA管理学概论》期末复习(2012年5月)
- 7000雅思词汇用100个句子记完
- 关于开设幼儿教育专业的论证报告
- 多氯联苯的污染与危害
- 对硝基甲苯制备对硝基苯甲酸
- 幼儿园小班游戏观察记录
- 江苏开放大学 网络学习工具及应用第三次 - 图文
- 整理版江苏淮阴中学教诲团体北京路中学传授教化案50210宝典