摘要: 今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值。 名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家。 所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。 解法1: 我们可以对这个乱序数组按照从大到小先行排序,然后取出前k大,总的时间复杂度为O(n*logn + k)。 解法2: 利用选择排序或交互排序,K次选择后即可得到第k大的数。总的时间复杂度为O(n*k) 解法3: 利用快速排序的思想,从数组S中 阅读全文
posted @ 2011-07-23 16:46 meifage2 阅读(203) 评论(0) 推荐(0) 编辑
摘要: class Program { static void Main(string[] args) { int[] A = new int[] { 3, 4, 3, 4, 5, 6, 6 }; int strLen = FindS(A,A.Length); Console.WriteLine(strLen); Console.ReadKey(); } public static int FindS(int[] A, int n) { for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (A[i] 阅读全文
posted @ 2011-07-23 15:20 meifage2 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个字符串,输出该字符串对称子字符串的最大长度,如输入google,则输出4.思路:思路很中规中矩,遍历这个字符串,若有发现相邻的两个字符相等,就循环判断与这两个字符相邻的两个字符是否相等, 直到不等,记下字符符合条件的字符个数。最大的个数即为所求。class Program { static void Main(string[] args) { string str = "google"; int strLen = counterplan1(str); Console.WriteLine(strLen); Console.ReadKey(); } public 阅读全文
posted @ 2011-07-23 15:07 meifage2 阅读(197) 评论(0) 推荐(0) 编辑