import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param cows int整型一维数组 * @return int整型一维数组 */ /** 方法一:计数排序适用于0-9这种,时间复杂度O(n) */ public int[] sortCows(int[] cows) { int n = cows.length; int[] count = new int[3]; // 统计每个品种的数量 for (int i = 0; i < n; i++) { count[cows[i]]++; } // 重构原始牛群数组 int index = 0; for (int i = 0; i < 3; i++) { while (count[i] > 0) { cows[index++] = i; count[i]--; } } return cows; } /** 方法二:冒泡或者选择排序 时间复杂度O(n2) */ public int[] sortCows (int[] cows) { for (int i = 0; i < cows.length; i++) { for (int j = i+1; j < cows.length; j++) { if(cows[i]>cows[j]){ int temp = cows[i]; cows[i] = cows[j]; cows[j] = temp; } } } return cows; } }
本题知识点分析:
1.数组遍历
2.数组下标索引赋值
3.排序(八大排序任选即可)
本题解题思路分析:
1.计数排序应该是最方便的 先统计每个品种的数量,然后重构原始牛群数组即可
2.冒泡或者选择排序之类的,要O(N2)
看面试官要求时间复杂度,如果没要求,直接一个冒泡,不过现在考冒泡的公司应该没有了吧,计数排序还是要知道的。
本题使用编程语言: Java
如果对您有帮助的话,可以点个赞~