用递归求出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);
	}

你可能感兴趣的:(char)