您的位置:首页 > 编程语言 > Java开发

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

2013-01-11 11:40 357 查看
1、递归算法题

一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n的顺序递增,当值大于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.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.[i]out
.print(strVoid
+ " ");

}

}

}

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

public class SwapDemo {

//有数组a
,用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.[i]swap1
(a);

//
SwapDemo.swap2(a);

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

System.out.print(a);

}

}

}

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

public class Convert {

private static final char[] [i]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));

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: