
算法面试
fesng
优快云年度博客之星和博客专家,毕业长期在一线互联网专注于Android开发以及Android漏洞挖掘研究。
展开
-
反转链表(reverse ListNode)
反转链表:java类public class ListNode{ int key; ListNode next;}思路分析:需要三个指针,current,prev和next。current.next = prev之前需要next = current.next(判断next是否为空),同时一直往后遍历while(node != null) - 代码:public ListN原创 2016-05-09 21:22:43 · 5929 阅读 · 0 评论 -
插入排序详解
概述有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。基本思想插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适原创 2016-09-06 12:01:58 · 1591 阅读 · 3 评论 -
【22】-快速排序随机选择元素的优雅解法
关于常规解法,请参考上一篇博客,链接如下: 面试之路(19)-快速排序详解介绍一种优雅的解法public int partition(int data[],int length,int start,int end) throws Exception{ if(data == null || length <= 0||start < 0||end >...原创 2016-05-04 23:02:22 · 8441 阅读 · 0 评论 -
【19】-快速排序详解
快速排序定义由C. A. R. Hoare在1962年提出 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。步骤1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;2)以第一个数组元素作为关键数据,赋值给ke...原创 2016-05-01 21:20:32 · 11096 阅读 · 0 评论