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
如果对您有帮助的话,可以点个赞~

京公网安备 11010502036488号