Java 按降序排序
如何只选择整数并按降序排序,然后将其放置在保留其他字符位置不变的位置 我试过了Java 按降序排序,java,Java,如何只选择整数并按降序排序,然后将其放置在保留其他字符位置不变的位置 我试过了 for ( i = 0; i < num.length - 1; i ++ ) { for ( j = i + 1; j < num.length; j ++ ) { if( i < j ) //sorting into descending order
for ( i = 0; i < num.length - 1; i ++ )
{
for ( j = i + 1; j < num.length; j ++ )
{
if( i < j ) //sorting into descending order
{
temp = num[ i ]; //swapping
num[ i ] = num[ j ];
num[ j ] = temp;
}
}System.out.print(temp+",");
for(i=0;i
我希望输入为f,2,3,a,9,5,输出为f,9,5,a,3,2。一种简单的方法(虽然不是最快的)是只取出数字,对它们进行排序,然后将它们放回数组中
这允许您使用Java内置的排序方法,这使读者清楚地知道您在做什么:
public static void main(String[] args) {
char[] arr = { 'f', '2', '3', 'a', '9', '5' };
List<Character> onlyNumbers = new ArrayList<>();
for (int i = 0; i < arr.length; i++) {
if (Character.isDigit(arr[i])) {
// if this position contains a digit, add it to our list
onlyNumbers.add(arr[i]);
}
}
// sort using the reverse of the natural ordering
Collections.sort(onlyNumbers, Collections.reverseOrder());
for (int i=0; i< arr.length; i++) {
if (Character.isDigit(arr[i])) {
// if this position contains a digit,
// replace it with the highest remaining digit
arr[i] = onlyNumbers.remove(0);
}
}
System.out.println(Arrays.toString(arr)); // [f, 9, 5, a, 3, 2]
}
publicstaticvoidmain(字符串[]args){
char[]arr={'f','2','3','a','9','5'};
仅列出编号=新建ArrayList();
对于(int i=0;i
此解决方案优先考虑可读性而不是速度。实施一种对数字进行适当排序的方法会更快,但除非您处理的是大数据集,否则这应该足够快。您可以使用现有方法的大部分。
删除
if(i
通过检查数字进行检查,如果它们是顺序错误的数字,则交换它们: char num [] = { 'f','2','3','a','9','5'};
System.out.println(num);
for ( int i = 0; i < num.length - 1; i ++ )
{
for (int j = i + 1; j < num.length; j ++ )
{
if( Character.isDigit(num[i])
&& Character.isDigit(num[j])
&& num[i] < num[j]) {
char temp = num[ i ]; //swapping
num[ i ] = num[ j ];
num[ j ] = temp;
}
}
}
System.out.println(num);//Prints f95a32
charnum[]={'f','2','3','a','9','5'};
系统输出打印项数(num);
for(int i=0;i
编辑如果您需要使用大于数字的数字,
您可以使用字符串对象数组而不是字符数组。您可以使用Integer.parseInt.Integer.parseInt来代替Character.isDigit。如果字符串不是整数,则Integer.parseInt将引发NumberFormatException,因此您必须将异常处理为无交换情况。我们应该猜测
num
是字符数组?什么是num
?根据定义,您意识到,i
还有其他简单的方法吗?您的思路是正确的。您希望比较i
和j
处的值,而不是直接比较i
和j
处的值。此外,您需要检查i
或j
处的值是否为字符并跳过过程如果是的话。我该怎么做呢?我对java还不熟悉。但是如果我需要添加100,a,,#,45,4作为输入呢?我会在我的答案中添加一条注释。