- 浏览: 443179 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (158)
- J2SE (15)
- c/c++ (17)
- linux & ubuntu (20)
- js (18)
- algorithm (21)
- android (1)
- software (3)
- svn (1)
- db (6)
- other (19)
- css (5)
- go (1)
- html 5 (3)
- computer science (1)
- php (3)
- 创业 (8)
- EJB & jboss (1)
- TDD (1)
- jsp & servlet (2)
- http, tcp & ip (2)
- hibernate (1)
- json (1)
- 乐 (2)
- ps (2)
- netbeans (1)
- extjs (2)
- eclipse (4)
- 项目管理 (1)
- varnish (2)
- study abroad (1)
- python (1)
- erlang (1)
- math (1)
- shell (1)
- assembly (4)
- lucene (1)
- web (1)
- http (1)
- tcp & ip (1)
最新评论
-
yiguxianyun:
...
css li 不换行 -
stdayong:
...
netbeans 中使用 maven -
程序猿_星:
为啥会中文乱码啊
servlet 以 gzip 格式返回数据 -
huanhuan519:
感谢分享~
gdb 调试工具 -
heyl1234:
写过些js,对css还不熟。谢谢~
css li 不换行
排序:数组 length=m,从其中中取出最大的 n 数字,n<=m
import java.util.Random; import java.util.TreeSet; /** * 排序算法:数组 length=m,从其中中取出最大的 n 数字,n<=m * 思路:用 TreeSet 存放结果,可以自动排序,先取前100个放到 TreeSet,然后遍历其余的,如果大于 TreeSet 中最小的,则删除 TreeSet 中最小的值,并将新值放到 TreeSet 中, */ public class TopMax { /** * 如果数字不在 treeset 里,则加入,并返回 true。 * 如果数字在 treeset 里,则不加入,并返回 false。 * @param ts * @param newData * @return */ private static boolean doTop(TreeSet<Integer> ts, int newData) { if (ts.contains(newData)) { return false; } ts.remove(ts.first()); ts.add(newData); return true; } private static void test(int numberCount, int topNum) { System.out.println("Sort begin..."); long current = System.currentTimeMillis(); int min = 0; int maxNumber = numberCount; Random random = new Random(); random.setSeed(System.currentTimeMillis()); TreeSet<Integer> ts = new TreeSet<Integer>(); for (int i = 0; i < topNum; ++i) { int newData = random.nextInt(maxNumber); ts.add(newData); } min = ts.first(); for (int i = topNum; i < numberCount; ++i) { int newData = random.nextInt(maxNumber); if (newData > min) { if (doTop(ts, newData)) { min = ts.first(); } } } System.out.println(numberCount + " top " + topNum + " within " + (System.currentTimeMillis() - current) + " millseconds"); System.out.println(ts); System.out.println("Sort end"); } public static void main(String[] args) { test(100000000, 100); } }
发表评论
-
c - linkedlist
2012-05-10 14:52 1081c - linkedlist store ordere ... -
c - word counter (binary-tree)
2012-05-09 14:17 1726c - word counter (binary-tree) ... -
random select
2011-08-28 01:00 1205random select problem: ... -
sparse data structure - matrix
2011-08-18 20:03 1083sparse data structure sp ... -
max sub_sequence - c
2011-08-10 01:02 1074max sub_sequence - c /* ... -
binary search - c
2011-08-06 12:07 1092binary search - c (simple) ... -
bit_array - simple use
2011-05-28 23:47 1007bit array,use less memory to de ... -
linkedlist - java 简单实现
2011-02-11 21:29 1593linked list 链表, - ... -
queue (用 java 简单实现)
2011-02-03 01:45 4048queue ------ 结构 线性存 ... -
Medians and Order Statistics (次序统计)
2011-01-03 14:36 2827Medians and Order Statistics - ... -
counting sort
2011-01-02 20:36 1564counting sort ------ counting ... -
quick sort
2011-01-01 20:26 1190quicksort ------ quicksort ove ... -
priority queue
2010-12-22 00:11 2270priority queue priority queue ... -
heap sort
2010-12-18 19:09 1206heapsort ------ heap 数据结构 hea ... -
merge sort
2010-12-01 23:37 1149merge sort 合并排序 ------ merge ... -
insertion sort
2010-10-28 00:21 1044insertion sort ------ insertio ... -
z 字型 读取 矩阵
2010-10-23 16:50 2190以 z 字型 读取 矩阵, ... -
已排序数组 a,求其元素的绝对值 共有多少个不同的值
2010-08-29 20:41 1603已排序数组 a,求其元素的绝对值 共有多少个不同的值? ... -
binary search
2010-08-29 19:35 972binary search in sorted array: ... -
An Introduction to Algorithm 2nd 's contents
2010-08-11 23:02 1185算法导论(2nd) 结构 * <Introductio ...
相关推荐
本文将探讨如何使用分治策略来解决一个特定的问题——在一个包含n个整数的数组中找到第二大的元素。 #### 分治算法原理 分治(Divide and Conquer)是一种重要的算法设计策略,它通过递归地将一个问题分解成两个或...
但在平均情况下,其时间复杂度为O(n log n),这使其成为实践中非常高效的排序算法。快速排序的空间复杂度为O(log n),由于递归栈的深度。 5. **插入排序**: 插入排序的工作原理类似于我们手动整理扑克牌,逐个将...
今天,我们将讨论如何使用汇编语言实现一个排序算法来对一个数组中的10个整型元素进行排序。 首先,让我们来了解一下排序算法的基本概念。排序算法是指将一组无序的数据按照某种规则进行排列,使得数据呈现出一定的...
标题中的“求一个数组中第K个最大值和最小值”是一个常见的算法问题,这个问题在计算机科学和编程领域中有着广泛的应用。它涉及到数组处理、排序以及数据查找等基本概念。接下来,我们将深入探讨这个问题的解决方案...
通过上述步骤,我们可以有效地使用分治法来求解数组中的两个最大值和两个最小值。这种方法不仅简洁高效,而且避免了蛮力法可能带来的大量重复计算。此外,这种分治的思想还可以应用于其他许多类似的排序和查找问题中...
该算法的时间复杂度为O(m+n),其中m和n分别是两个输入数组的长度。这是因为每个元素最多只会被访问一次。 #### 知识点五:应用场景 1. **数据库查询优化**:在数据库系统中,处理大量已排序的数据时可以利用此算法...
总的来说,"数组中数对差最大"的问题是一个基础的算法问题,通过双指针或排序+双指针的方法可以有效地解决。它展示了如何利用编程技巧在有限的时间内处理数组数据,对于学习和理解数据结构与算法具有重要意义。
在本篇【源代码】C++算法中,我们主要探讨的是如何在一维数组中去除重复元素,同时确保算法的时间复杂度为O(n),并且在整个处理过程中不额外开辟新的内存空间。这种问题在实际编程中非常常见,特别是在处理大量数据...
- 对这两个数组分别使用快速排序算法进行排序。 - 调用 `mergesort()` 函数将排序后的两个数组合并为一个有序数组 `number3`。 - 输出排序前后的数组。 #### 3. 快速排序函数 `quicksort()` - 使用了快速排序算法来...
2. 最大子数组和:寻找数组中连续子数组的最大和,Kadane's算法可以在一次遍历中解决,时间复杂度为O(n)。 3. 翻转数组:给定一个数组,反转数组中的元素。可以通过两个指针从两端向中间遍历并交换元素实现。 4. ...
具体而言,我们有两个无序的整数数组 `a` 和 `b`,每个数组的长度都是 `n`。我们的任务是通过交换 `a` 和 `b` 中的某些元素,使得 `a` 的所有元素之和与 `b` 的所有元素之和之间的差尽可能小。 ### 二、问题分析 #...
假设`A`和`B`的长度分别为`n`和`m`,那么合并这两个数组可以分为以下步骤: 1. 创建一个新的数组`C`,长度为`n + m`,用来存放合并后的结果。 2. 初始化两个指针`pA`和`pB`,分别指向`A`和`B`的首元素。 3. 遍历`C`...
### 算法分析作业答案:求最大数与次大数的最优算法 #### 题目背景 在计算机科学领域,特别是在数据处理和算法设计方面,经常需要找到一组数值中的最大值或最小值,甚至是第二大值等。这类问题不仅在编程竞赛中常见...
数组的索引通常从0开始,因此,如果我们有一个长度为n的数组,我们可以访问从0到n-1的所有位置。 数组的应用非常多样化,可以用于实现以下场景: 1. **存储数据**:例如,你可以创建一个数组来存储学生的成绩、...
在这个函数中,我们首先检查数组是否有效(非null且长度大于1),然后通过两层循环实现冒泡排序。外层循环控制遍历次数,内层循环则负责比较并交换相邻元素。通过不断重复这个过程,数组最终会升序排列。 在实际...
在计算机科学和编程领域,"数组的逆序数"是一个重要的概念,特别是在算法分析和排序算法中。逆序数(Inversion Count)是指在数组或序列中,如果一个大于其后面的元素,则这样的对称为逆序对。逆序数就是数组中逆序...
在IT行业的算法领域,计算整形数组中第k小的数是一个经典的编程问题,它涉及到排序、查找等基础知识,是衡量一个程序员基本功的重要指标之一。本文将深入解析这一知识点,包括其背后的算法原理、实现方法以及优化...
首先,取数组的第一个、最后一个和中间元素,找出三个中最小的作为新的枢轴,然后根据枢轴的位置将数组分为三部分:小于枢轴、等于枢轴和大于枢轴。如果k在小于枢轴的区间,就在这个区间重复此过程;如果k在大于枢轴...
这个c/c++小程序的功能是可以让用户从键盘输入数组长度和元素个数, 实现数组元素从大到小,或者从小到大排序,实现冒泡排序的算法.主要涉及到的c/c++的语法有数组/动态内存分配等语法
总的来说,解决"求一个数组最小的两个数的下标"的问题,可以通过简单的线性搜索或者利用更高效的算法如优先队列来实现。在实际应用中,应根据数据规模和性能需求选择合适的方法。在VC6.0这样的集成开发环境中,我们...