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));
}
}
一个整数,大于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));
}
}
相关文章推荐
- JAVA知识点整理第六部分——线程
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
- 给Java新手的一些建议----Java知识点归纳(Java基础部分)
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
- 给Java新手的一些建议----Java知识点归纳(Java基础部分)
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
- 收集Java面试题知识点(Java基础部分一)
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
- Java 基础部分已授知识点
- 房上的猫:java基础知识部分知识点
- 给Java新手的一些建议----Java知识点归纳(Java基础部分)
- 收集Java面试题知识点(Java基础部分二)
- java基础知识部分知识点
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
- 收集Java面试题知识点(Java基础部分三)
- Java面试笔试知识点之基础部分1
- 给Java新手的一些建议----Java知识点归纳(Java基础部分)