用递归求出char[]中的最大值(延伸了冒泡算法)

public char max(char[] c,int num){
        //当前到那个元素的索引
        int number=num;
        //获取当前元素
        char max=c[number];
        //倒数第二数(这块要注意)
        if(number<c.length-1){
            if(max>c[number+1]){
                c[number+1]=max;
            }else{
                max=c[number+1];
            }
            return max(c,++number);
        }else{
            return max;
        }
        
    }
public void testMax(){
		char[] cArr={'2','a','6','e','?','3','f'};
		Calculator c=new Calculator();
		char result=c.max(cArr, 0);
		Assert.assertEquals('f', result);
	}

使用冒泡算法(有不对之处请指正!):
public static void main(String args[]) {
		char[] s = { '2', 'a', '6', 'e', '?', '3', 'f' };
		char temp;
		//从高端向前扫描实现排序
		/*for (int i = 0; i < s.length - 1; i++) {
			for (int j = s.length - 2; j >= i; j--) {
				if (s[j + 1] > s[j]) {
					temp = s[j + 1];
					s[j + 1] = s[j];
					s[j] = temp;
				}else{
					*//**
					 * 当某一次内循环操作中只有比较记录的操作而没有交换记录的操作时,
					 * 表示待排序列已经排好,算法可以考虑中止结束。
					 * *//*
					continue;
				}
				System.out.println(s);
			}
			System.out.println("_______________");
		}*/
		//从低端向后扫描实现排序
		for(int i = s.length -1; i > 0; i--){
			for(int j = 0; j < i; j++){
				if(s[j] > s[j + 1]){
					temp = s[j + 1];
					s[j + 1] = s[j];
					s[j] = temp;
				}else{
					continue;
				}
				System.out.println(s);
			}
			System.out.println("_______________");
		}		
	}
这样也可以实现
public static void main(String[] args) {
		char[] charArr = { '2', 'a', '6', 'e', '?', '3', 'f' };

		for (int i = 0; i < charArr.length - 1; i++) {
			for (int j = i + 1; j < charArr.length; j++) {
				char temp = charArr[i];
				if (temp < charArr[j]) {
					charArr[i] = charArr[j];
					charArr[j] = temp;
				}
				System.out.println(charArr);
			}
			System.out.println("___________________");
		}
		//System.out.println(charArr);
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值