`
microjava
  • 浏览: 318670 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

已知最大值的高效排序算法

阅读更多
有一组数据3,5,9,7,4,13,15,0,2,20.已知最大数是20,把数据从小到大排序,而且算法复杂度只能是1,不能用Java提供的类实现,如Arrays.sort()等。


思路:

最大是20,就用一个长度21的boolean数组,把数作为index标记出现过的。然后从小到大遍历这个boolean数据形成排序后的数组

代码:
int[] a = {3,5,9,7,4,13,15,0,2,20};
boolean[] b = new boolean[21];

for(int i=0;i<a.length;i++) {
  b[a[i]] = true;
}

for(int i=0;i<b.length;i++) {
  if(b[i]) {
    System.out.print(i+",");
  }

}

分享到:
评论

相关推荐

    求数组最大值,最小值,平均值,排序,寻找指定数据.rar————求数组最大值,最小值,平均值,排序,寻找指定数据

    例如,求最大值和最小值的时间复杂度是O(n),计算平均值也是O(n),而排序算法的时间复杂度可以从O(n²)(冒泡、选择、插入排序)到O(n log n)(快速排序)。搜索特定数据的线性搜索时间复杂度是O(n),而二分搜索是O...

    各种排序算法比较

    时间复杂度用于衡量排序算法的效率,通常以大O表示法来表示。文档中提到了几种不同排序算法的时间复杂度: - **O(n²)**:插入排序、冒泡排序和选择排序的时间复杂度均为O(n²),这意味着随着数据量的增加,这些...

    各种排序算法的优缺点

    快速排序是一种高效的排序算法,通过分治策略和递归来实现排序。其优点是极快,数据移动少,缺点是不稳定。 箱排序是一种特殊的排序算法,用于正整数数据的排序。其优点是快,效率达到 O(1),缺点是数据范围必须为...

    求解找到数组A[1..n]中元素的最大值和次最大值(本小题以数组元素的比较为标准操作)的算法,并分析其最坏情况的时间复杂度。

    给出的算法是一种基于单次遍历的方法来确定数组中的最大值与次最大值。 **伪代码**: ```c void CZ_max(datatype A[n], datatype &x, datatype &y) { x = A[1]; // 初始化最大值为数组的第一个元素 y = A[1]; // ...

    VB 各种排序法

    本主题将深入探讨三种常见的排序算法:选择排序、冒泡排序和交换排序,以及如何在VB中实现查找最大值和最小值的操作。 1. **选择排序**:选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据...

    排序算法介绍.zip基础算法

    Hoare提出的,是一种高效的排序算法,其基本思想是采用分治策略。选取一个基准值,将数组分为两部分,一部分所有元素都比基准小,另一部分所有元素都比基准大,然后再对这两部分分别进行快速排序。 5. **归并排序*...

    选择排序算法C语言源程序.zip

    因为它对任何输入数据的排序都执行相同的比较次数,所以它不是一种高效的排序算法,特别是在处理大规模数据时。然而,它的优点在于它只需要常量级别的额外空间,因此在内存有限的情况下可能是不错的选择。 7. **...

    c语言数组参数最大值最小值

    函数内部通过循环遍历数组,比较当前元素与已知最小值和最大值,更新它们的值。在 `main` 函数中,我们调用 `findMinMax` 并打印结果。 在学习C语言的过程中,数据结构是非常重要的一部分,比如链表、栈、队列、树...

    数组最大值最小值_数组最大值最小值_最小值_

    1. **遍历法**:这是最直观的方法,通过遍历数组中的每一个元素,比较当前元素与已知最大值和最小值,更新这两个值。这种方法简单易懂,适用于所有支持迭代的数据结构。以下是一个Python示例: ```python def ...

    排序算法 之 堆排序

    **堆排序算法详解** 堆排序是一种基于比较的排序算法,其基本思想是利用二叉堆这一数据结构来实现数组或链表的排序。在计算机科学中,二叉堆通常可以分为最大堆和最小堆,最大堆中每个父节点的值都大于或等于其子...

    排序算法-基于C语言实现的排序算法之RadixSort实现.zip

    **排序算法——C语言实现的基数排序(RadixSort)详解** 在计算机科学中,排序算法是用于将一组数据按照特定顺序排列的算法。这里我们关注的是基数排序(RadixSort),这是一种非比较型整数排序算法,其原理是将...

    数据结构实验报告--链式基数排序算法.doc

    总的来说,链式基数排序算法通过维护多个链表,根据每个数字的每一位进行排序,实现了对整数数组的高效排序。在实际应用中,这种算法对于大数据量且位数分布均匀的情况特别有效。在实验报告中,作者通过设计、实现和...

    解C语言数组最大值及其最小下标.pdf

    在循环内部,我们比较当前元素`array[i]`与已知最大值`max`,如果当前元素更大,则更新`max`的值并同时更新`min_index`: ```c if (array[i] &gt; max) { max = array[i]; min_index = i; } ``` 遍历结束后,我们...

    一些word文档写的算法排序代码

    快速排序是一种高效的分治策略排序算法,通过选择一个基准值,将数组分为两部分,一部分所有元素小于基准,另一部分所有元素大于基准,然后对这两部分递归地进行快速排序。在提供的代码中,`QuickSort`函数实现此...

    正反都可排序函数

    该函数采用了一种改进的选择排序算法,通过一次遍历同时找到最大值和最小值,并根据排序方向的不同对它们进行相应的交换处理。 1. **初始化变量**: - `i`: 外层循环索引。 - `j`: 内层循环索引。 - `min` 和 `...

    Java实现计数排序算法(源代码)

    计数排序是一种高效的非比较型整数排序算法,尤其适用于已知数据范围内非负整数的排序任务。它通过统计数组中每个数值出现的频率来确定各个数值在排序后数组中的确切位置。此算法的时间复杂度为O(n+k),其中n表示...

    查找序列(数组)中的最大值,最小值(例子)

    对于大数据集,可以考虑使用更高效的算法,如线性扫描法、分治法或者优先队列(堆)等。在实际编程中,Java还提供了`java.util.Arrays`类的`max()`和`min()`方法,可以直接计算数组的最大值和最小值,简化代码并优化...

    C语言实现的冒泡排序算法

    接着,内层循环从0开始,到`n-i-1`结束,这里的`i`是外层循环的迭代值,表示当前轮已知的最大元素已经位于`arr[n-i-1]`位置,因此内层循环无需再比较这个位置及其之后的元素。 在内层循环中,我们比较相邻的元素`...

    求一个数组中第K个最大值和最小值

    总结来说,解决这个问题涉及到了数组操作、排序算法、数据结构(如堆)、输入输出、用户界面设计、错误处理以及资源管理等多个方面的知识点。通过这样的小程序,我们可以锻炼基础编程技能,理解数据结构和算法的重要...

    冒泡排序法的面试简历题目

    冒泡排序法是一种基础但重要的排序算法,常用于面试中测试候选人的编程基础。它的工作原理是通过重复遍历待排序的序列,比较相邻元素并根据需要交换它们的位置,使得每一遍过后的最大(或最小)元素“浮”到序列的...

Global site tag (gtag.js) - Google Analytics