算法
文章平均质量分 77
降龙
一切都会过去!
展开
-
八大排序算法总结
插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序。要点:设立哨兵,作为临时存储和判断数组边界之用。实现:Void InsertSort(Node L[],int length){Int i,j;//分别为有序区和转载 2010-05-30 19:39:00 · 644 阅读 · 0 评论 -
面试算法题总结——引言
昨天参加了淘宝的实习生招聘面试,由于自己没有好好准备,中间出现了好几次冷场,真是悲剧。。。。那个面试官应该也是技术人员,他问了我几个关于算法的问题,我勉强答了出来,但是我自己都感觉自己想出来的方法很笨,算法复杂度不够优。。。。估计这次面试要以悲剧收场了。。。。 面试过后,自己反思了一下,发现自己在算法方面很是薄弱,对里面的一些基础掌握的不够好。在计算机领域中流行着这样一种说法:计算机程序=数据结构+算法,而且算法是程序的灵魂。对任何工程问题,当用软件来实现时,必须选取满足当前的资源限制原创 2011-04-15 10:21:00 · 1028 阅读 · 0 评论 -
面试算法题总结(二)
<br />求子数组的最大和:<br /> 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。<br /> 例如:输入的数组为1,-2,3,10,-4,7,2,-5;和最大的子数组为3,10,-4,7,2;因此输出为该子数组的和18。<br /> <br /> 解决方法如下:<br />import java.util.Scanner;public class Test原创 2011-04-16 14:00:00 · 750 阅读 · 0 评论 -
面试算法题总结(一)
<br /><br />华为面试题:<br /> 写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。如:100个1是一个组合,5个1加19个5是一个组合。。。。 请用C++语言写。<br /><br /><br />答案:<br />最容易想到的算法是:<br />设x是1的个数,y是2的个数,z是5的个数,number是组合数;注意到0<=x<=100,0<=y<=50,0<=z=2原创 2011-04-15 10:32:00 · 832 阅读 · 0 评论 -
牛人的回字算法
<br />static void printbox(int num){ for (int i = 0; i < num * 2 - 1; i++) { for (int j = 0; j < num * 2 - 1; j++) { Console.Write(Math.Max(Math.Abs(i - num + 1), Math.Abs(j - num + 1)) + 1); } C转载 2011-04-23 11:16:00 · 991 阅读 · 0 评论 -
面试算法题(三)
题目:给定一个函数rand5(),该函数可以随机生成1-5的整数,且生成概率一样。现要求使用该函数构造函数rand7(),使函数rand7()可以随机等概率的生成1-7的整数。思路:很多人的第一反应是利用rand5() + rand()%3来实现rand7()函数,这原创 2011-09-23 16:17:17 · 1829 阅读 · 5 评论 -
希尔(Shell)排序——改良的插入排序算法
希尔排序是插入排序中的一种,前面一篇文章(点击查看)中提到的插入排序算法准确的来说应该称为“直接插入排序算法”,而这里介绍的希尔排序算法是对直接插入排序算法改进之后形成的一种算法,该算法是由D.L Shell于1959年提出的,它也因此而得名,又称缩小增量排序算法。基本思想原创 2011-10-14 19:27:56 · 4155 阅读 · 0 评论 -
几种基本的排序算法:选择排序、插入排序、冒泡排序
选择排序(Selection sort)、插入排序(Insertion sort)与冒泡排序(Bubble sort)這三个排序方式是初学排序所必须知道的三个基本排序方式,它们由于速度不快而不实用(时间复杂度都是O(n2)),然而它们排序的方式确实值得我们观察和探讨。一、选择原创 2011-10-13 11:59:10 · 9227 阅读 · 4 评论