爪哇2博客
爪哇2博客

用Java计算排序

计数排序是一种特殊的排序技术,用于在特定范围之间对元素进行排序。假设元素属于1到K的范围,那么可以使用Counting sort来对元素进行O(N)次排序。
计数排序的基本思想是找到小于X的元素数,因此X可以放置在正确的位置。

计数排序步骤:

  • 采取一个数组来存储每个元素的数量。假设数组元素包含1到K,然后使用K初始化count数组。
  • 现在添加count数组的元素,以便每个元素存储其先前元素的总和。
  • 修改后的count数组存储元素在实际排序数组中的位置。
  • 迭代数组并根据修改后的count数组按正确的顺序放置元素,并将count减少1。

用于计数排序的Java程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
组织.Arpit.爪哇2blog;
 
进口 爪哇.实用程序.数组;
 
上市 CountingSortMain {
 
上市 静态的 虚空 主要([] args) {
系统..打印(“排序之前:”);
整型 rr[]={1,4,7,3,4,5,6,3,4,8,6,4,4};
系统..打印(数组.toString(rr));
rr=计数排序(rr);
系统..打印(“ == ====================” );
系统..打印(“排序后:”);
系统..打印(数组.toString(rr));
}
 
静态的 整型[] 计数排序(整型 rr[])
{
整型 n = rr.长度;
 
//结果将存储排序后的数组
整型 结果[] = 整型[n];
 
//用9初始化count数组,因为array包含范围从1到8的元素。
整型 计数[] = 整型[9];
对于 (整型 i=0; i<9; ++i)
计数[i] = 0;
 
//将每个元素的计数存储在count数组中
对于 (整型 i=0; i<n; ++i)
++计数[rr[i]];
 
//更改count [i],以便count [i]现在包含实际
//此元素在输出数组中的位置
对于 (整型 i=1; i<=8; ++i)
计数[i] + = 计数[i-1];
 
对于 (整型 i = 0; i<n; ++i)
{
结果[计数[rr[i]]-1] = rr[i];
-计数[rr[i]];
}
 
返回 结果;
}
 
}
 

当您运行上述程序时,将获得以下输出:

1
2
3
4
5
6
7
 
之前 排序 :
[1, 4, 7, 3, 4, 5, 6, 3, 4, 8, 6, 4, 4]
== === === === === === === ===
排序 :
[1, 3, 3, 4, 4, 4, 4, 4, 5, 6, 6, 7, 8]
 

时间复杂度= O(N)

我建议尝试调试程序以更好地理解它。

分享这个

作者

关注作者

相关文章

  • 11月04日

    爪哇中的拓扑排序

    在这篇文章中,我们将在图中看到有关拓扑排序的信息。拓扑排序是顶点或节点的排序,例如,如果(u,v)之间存在边,那么在拓扑排序中u应该先于v。拓扑排序仅适用于有向无环图(DAG)。如果图中有一个循环,则[…]

  • 8月23日

    用Java排序数组

    在本文中,我们将看到如何在Java中对数组进行排序。有多种在Java中对数组进行排序的方法。您可以实现不同的排序算法来对数组进行排序。您可以使用Arrays.sort方法对Java中的数组进行排序。 数组.sort方法有各种重载版本。你可以通过它[…]

  • 10月12日

    爪哇中的选择排序

    如果您想练习数据结构和算法程序,则可以阅读数据结构和算法面试程序。选择排序是一种就地比较排序算法。它实现起来非常简单,但是在大量输入时效果不佳。选择排序算法在列表中找到最小元素。 […]

  • 10月12日

    Shell在Java中排序

    Shell排序是基于比较的排序算法。是插入排序的概括。它是唐纳德·壳(Donald Shell)发明的。它允许对相距很远的元素进行排序。如果进行插入排序,则仅在相邻元素之间进行比较,而在外壳排序中进行比较,这样可以避免比较相邻元素直到最后一步。壳的最后一步[…]

  • 10月12日

    用Java快速排序

    如果您想练习数据结构和算法程序,则可以解决数据结构和算法面试问题。快速排序或分区交换排序是一种使用分而治之算法的排序算法。在快速排序中,我们首先选择一个数据透视表并将其分为两个子列表,一个子列表将包含低于数据透视表的元素和[…]

  • 10月12日

    爪哇中的堆排序

    在本文中,我们将看到如何在Java中实现堆排序。我将堆排序分为多个部分,以使其更易于理解。什么是堆?堆是具有某些特殊属性的树,因此node的值应大于或等于(小于或等于[…]

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


成为朋友

©2020 爪哇2博客