java基础部分的第六小部分知识点--…

1、递归算法题

一个整数,大于0,不用循环和本地变量,按照n2n4n8n的顺序递增,当值大于5000时,把值按照指定顺序输出来。

例:n=1237

则输出为:

1237

2474

4948

9896

9896

4948

2474

1237

提示:写程序时,先致谢按递增方式的代码,写好递增的以后,再增加考虑递减部分。

public class Recursion2 {

  private static void doubleNumber(int number){

     System.out.println(number);

     if(number<=5000) doubleNumber(number * 2);

     System.out.println(number);

  }

  public static void main(String[] args) {

     Recursion2.doubleNumber(20);

  }

}

 

2、递归算法题

1个人10岁,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?

public class Recursion {

  //1个人10岁,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?

  private static int getAge(int number){

     if(number == 1)return 10;

     return getAge(number-1)+2;

  }

  public static void main(String[] args) {

     System.out.println(Recursion.getAge(8));

  }

 

}

 

3、排序都有哪几种方法?请列举。用JAVA实现一个快速排序。

 本人只研究过冒泡排序、选择排序和快速排序,下面是快速排序的代码:

public class QuickSort {

     

    public void quickSort(String[] strDatas, int left, int right) {

       String middleNumber, tempData;

       int i = left, j = right;

       middleNumber = strDatas[(i + j) / 2];

      

       do {

           while (strDatas[i].compareTo(middleNumber) < 0 && i < right)

              i++; // 找出左边比中间值大的数

           while (strDatas[j].compareTo(middleNumber) > 0 && j > left)

              j--; // 找出右边比中间值小的数

           if (i <= j) { // 将左边大的数和右边小的数进行替换

              tempData = strDatas[i];

              strDatas[i] = strDatas[j];

              strDatas[j] = tempData;

              i++;

              j--;

           }

       } while (i <= j); // 当两者交错时停止

 

       if (i < right) {

           quickSort(strDatas, i, right);

       }

       if (j > left) {

           quickSort(strDatas, left, j);

       }

    }

 

    public static void main(String[] args) {

       String[] strVoid = new String[] { "11", "66", "22", "0", "55", "22","0", "32" };

       QuickSort sort = new QuickSort();

       sort.quickSort(strVoid, 0, strVoid.length-1);

       for (int i = 0; i < strVoid.length; i++) {

           System.out.print(strVoid[i] + " ");

       }

    }

}

 

4、有数组a[n],用java代码将数组元素顺序颠倒

public class SwapDemo {

 

//有数组a[n],用java代码将数组元素顺序颠倒

    //for(int i=0,int j=a.length-1;i<j;i++,j--)是否等效于 for(int i=0;i<a.length/2;i++)呢?

    public static void swap1(int a[]){

       int len = a.length;

       for(int i=0;i<len/2;i++){ 

           int tmp = a[i];

           a[i] = a[len-1-i];

           a[len-1-i] = tmp;

       }

    }

    public static void swap2(int a[]){

       int len = a.length;

       for(int i=0,j=len-1;i<j;i++,j--){ 

           int tmp = a[i];

           a[i] = a[j-i];

           a[j-i] = tmp;

       }

    }

    public static void main(String[] args) {

       int[] a = new int[]{1,2,3,4};

       SwapDemo.swap1(a);

//     SwapDemo.swap2(a);

       for (int i = 0; i < a.length; i++) {

           System.out.print(a[i]);

       }

      }

}

 

5.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。

public class Convert {

 

    private static final char[] data = new char[]{ '', '', '', '', '',

           '', '', '', '', '' };

    private static final char[] units = new char[]{ '', '', '', '', '',

           '', '', '', '亿' };

 

    // 金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。

    public static String convert(int money) {

       StringBuffer sbf = new StringBuffer();

       int unit = 0;

       while (money != 0) {  //110

           System.out.println("unit--->:" + unit);

           sbf.insert(0, units[unit++]);

           System.out.println("sbf--->:" + sbf.toString());

           int number = money % 10;

           System.out.println("number--->" + number);

           sbf.insert(0, data[number]);

           System.out.println("sbf---->:" + sbf.toString());

           money /= 10;

           System.out.println("money---->:" + money);

        }

        // 去零代码

        String result = sbf.toString().replaceAll("[拾佰仟]", "")

              .replaceAll("+", "").replaceAll("+", "")

              .replaceAll("+", "");

        // System.out.println("sbf.reverse:" + sbf.reverse().toString());

        //sbf.reverse()--->反正字符串

        System.out.println(sbf.toString());

        return result;

       }

 

        public static void main(String[] args) {

           System.out.println(Convert.convert(110));

        }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值