用Java计算排序
计数排序是一种特殊的排序技术,用于在特定范围之间对元素进行排序。假设元素属于1到K的范围,那么可以使用Counting sort来对元素进行O(N)次排序。
计数排序的基本思想是找到小于X的元素数,因此X可以放置在正确的位置。
计数排序的基本思想是找到小于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)
我建议尝试调试程序以更好地理解它。