iOS面试几个基本算法

1.【快速排序】

算法介绍:假设要排序的数组是A[0]……A[n-1]

1)设置两个变量i、j,排序开始的时候:i=0,j=n-1;

2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];

3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换;

4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换;

5)重复第3、4步,直到i=j; (3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i, j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。


2.【选择排序】

算法介绍:最值出现在起始端

1)第1趟:在n个数中找到最小(大)数与第一个数交换位置

2)第2趟:在剩下n-1个数中找到最小(大)数与第二个数交换位置

3)重复这样的操作...依次与第三个、第四个...数交换位置

4)第n-1趟,最终可实现数据的升序(降序)排列。


3.【冒泡排序】

算法介绍:冒泡排序就是比较是相邻的两个元素比较,把小的元素往前调或者把大的元素往后调。

1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

3)针对所有的元素重复以上的步骤,除了最后一个。

4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。


4.【二分查找(折半查找)】

算法介绍:假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

算法要求:

1)必须采用顺序存储结构

2)必须按关键字大小有序排列。

二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果xa[n/2],则只要在数组a的右半部搜索x;重复方法。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 13,008评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,156评论 18 399
  • 她如短路的吊灯忽明忽暗 不知何时能够高清久看 她比深海更深,比远方更远 却又时时出现 晚风吹啊吹 时而轻缓如海绵,...
    糖炒板栗儿阅读 324评论 4 7
  • 听到考试下课铃响起,叮叮叮叮…………哇!八天的国庆假,从开始今天解放了,心里想着这八天该怎么计划………去旅游?...
    李亚杰80阅读 305评论 0 0
  • 【原文】才大者 望自大 人所服 非言大 【译文】有才能的人,处理事情的能力卓越,声望自然不凡。人们之所以欣赏佩服,...
    人力资源管理中心阅读 1,485评论 0 0

友情链接更多精彩内容