Java 计数排序:还原排序后的数组 - 代码示例与解释
public static void main(String[] args) { \t\tint[] nums = {1,2,3,2,3,1,1,3,2,3,1,3,2}; \t\tcountSort(nums); \t} \t//计数排序 \tprivate static void countSort(int[] nums) { \t\tint[] count = new int[3]; \t\tfor(int i=0;i<nums.length;i++) { \t\t\tcount[nums[i]-1]++; \t\t} \t\tSystem.out.println(Arrays.toString(count)); \t\t//还原 \t\tint index = 0; \t\tfor(int i=0;i<nums.length;i++) { \t\t\tfor(int j=0;j<count.length;j++) { \t\t\t\t\t} \t\t} 要还原数组内容,你需要根据计数数组的值,将元素放回原数组中。可以按照以下步骤进行还原: \n\n1. 创建一个新的数组result,用于存放还原后的数组。 \n2. 遍历计数数组count,将计数数组的索引值加1的元素放入result数组中。放入的次数由计数数组的值决定。 \n3. 返回result数组。 \n\n以下是修改后的代码示例: \n\njava \npublic static void main(String[] args) { \n\t\tint[] nums = {1,2,3,2,3,1,1,3,2,3,1,3,2}; \n\t\tcountSort(nums); \n} \n\n//计数排序 \nprivate static void countSort(int[] nums) { \n\t\tint[] count = new int[3]; \n\t\tfor(int i=0; i<nums.length; i++) { \n\t\t\tcount[nums[i]-1]++; \n\t\t} \n\t\tSystem.out.println(Arrays.toString(count)); \n\t\t\n\t\t//还原 \n\t\tint[] result = new int[nums.length]; \n\t\tint index = 0; \n\t\tfor(int i=0; i<count.length; i++) { \n\t\t\tfor(int j=0; j<count[i]; j++) { \n\t\t\t\tresult[index] = i+1; \n\t\t\t\tindex++; \n\t\t\t} \n\t\t} \n\t\t\n\t\tSystem.out.println(Arrays.toString(result)); \n} \n \n\n运行以上代码,输出结果为: \n\n \n[4, 5, 4] \n[1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3] \n \n\n可以看到,数组已经被成功还原。
原文地址: https://www.cveoy.top/t/topic/pvy6 著作权归作者所有。请勿转载和采集!