算法
s_pr1te
这个作者很懒,什么都没留下…
展开
-
快速排序暴力解析
快速排序是冒泡排序的改进版,也是最好的一种内排序,还涉及到分治和递归,在很多面试题中都会出现,也是作为程序员必须掌握的一种排序方法。过程解析:第一趟排序:具体运行简析:首先使用两个指针low 和high分别指向待排序的数组的两界,即arr[0]和arr[arr.length-1],然后我们可以将arr[0]作为一个基准值,即int p=arr[0].首先我们从high指针开始,逐步向前搜...原创 2019-04-03 21:30:27 · 477 阅读 · 0 评论 -
插入排序的那些事
直接插入排序的算法直接插入排序基本思想是:仅有一个元素的序列总是有序的,因此,对 n 个记录的序列,可从第二个元素开始直到第 n 个元素,逐个向有序序列中执行插入操作,从而得到 n 个元素按关键字有序的序列。一般来说,在含有 j-1 个元素的有序序列中插入一个元素的方法是:从第 j-1 个元素开始依次向前搜索应当插入的位置,并且在搜索插入位置的同时可以后移元素,这样当找到适当的插入位置时即可...原创 2019-04-04 16:20:19 · 153 阅读 · 0 评论 -
一分钟带你熟练掌握选择排序算法
简单选择排序的算法第一趟,从 n 个元素中找出关键字最小的元素与第一个元素交换;第二趟,在从第二个元素开始的 n-1 个元素中再选出关键字最小的元素与第二个元素交换;如此,第 k 趟,则从第 k 个元素开始的 n-k+1 个元素中选出关键字最小的元素与第 k 个元素交换,直到整个序列按关键字有序.如图所示:代码实现:public static void seSort(int[] a...原创 2019-04-07 16:08:46 · 217 阅读 · 0 评论 -
逆波兰表达式的简析
百度词条定义逆波兰表达式又叫做后缀表达式。在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,这种表示法也称为中缀表示。波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法,按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。后缀表达式求值:从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(...原创 2019-04-02 20:35:51 · 722 阅读 · 0 评论 -
冒泡排序详解
冒泡排序的实现:/** 功能:数组排序(无序数组-----有序数组) 排序算法很多,冒泡排序,选择排序,插入排序,是三种最基本最简单的排序算法,效率最低 技能:冒泡排序 冒泡排序的算法 * 1.整个数列分成两部分:前面是无序数列,后面是有序数列 * 2.初始状态下,整个数列都是无序的,有序数列是空 * 3.如果一个数列有n个元素,则至多需要n-1趟循环才能保证数列有...原创 2019-04-16 12:56:33 · 220 阅读 · 0 评论 -
常用算法排序比较
先看图:1.直接插入排序、简单选择排序、冒泡排序是最简单的三种排序算法,时间复杂度也最高O(n2),作为基础排序,面试中有被问到,三种都要掌握。2.三种简单排序算法简单,但是效率低下;高级排序在简单排序基础上优化,算法复杂,换取的是性能提高,同时可能需要更多的辅助空间。3.快速排序和归并排序都使用了分治和递归,所以面试时被问到的机会比较高,尤其是快速排序。4.从时间性能上看,快速排序是所有...原创 2019-04-26 16:21:13 · 206 阅读 · 0 评论 -
顺序查找与二分查找解析
顺序查找非常简单示例1:在成绩中查询分数是100的第一个分数 99 86 59 63 49 100 99 78for(int i =0 ;i<a.lenth;i++){ if(a[i])==100){ return i; } }示例2:在学生中查询分数是100的第一个学生存储结构可以是顺序表,也可以是链表。逐个比较查询,如果找到...原创 2019-04-28 16:59:57 · 688 阅读 · 0 评论 -
归并排序的那点事
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。从下往上的归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列,再将这...原创 2019-04-24 12:50:36 · 245 阅读 · 0 评论