黑马程序员技术交流社区
标题:
一个简单的排序题目(面试题)
[打印本页]
作者:
yuhongzhen
时间:
2015-11-27 21:03
标题:
一个简单的排序题目(面试题)
这是一个黑马面试题,当时紧张没做出来,哎,现在做出来了,请大家指教。
/*编写一个类,其中包含两个排序的方法sort(), 参数不同,当键盘录入的是一串整数,就按照从小到大 的顺序输出,如果键盘录入的是一个字符串,就将字符串反序输出。*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//接受键盘输入
Scanner scanner = new Scanner(System.in);
//判断输入的内容
if (scanner.hasNextInt()) {
int a=scanner.nextInt();//输入的是整数,则调用sort方法,从小到大排列
sort(a);
} else {
String str=scanner.next();//输入的字符串,则调用sort方法,反序输出
sort(str);
}
}
//整数排序
public static void sort(int num){
//将整数转化为char数组
char[] ch=Integer.toString(num).toCharArray();
//定义一个整数数组
int [] chInt=new int[ch.length];
//遍历char数组,并转换元素为整数,存入整数数组
for(int a=0;a<ch.length;a++){
String s=String.valueOf(ch[a]);//char转String
chInt[a]=Integer.parseInt(s);//String转int,存入整数数组
}
//遍历整数数组,进行排序
for(int i=0;i<chInt.length-1;i++){
for(int j=i+1;j<chInt.length;j++){
if(chInt[j]<=chInt[i]){
int temp=chInt[i];
chInt[i]=chInt[j];
chInt[j]=temp;
}
}
}
//输出结果
for(int b:chInt){
System.out.print(b+",");
}
}
//字符串反序输出
public static void sort(String str){
//转换字符串为char数组
char[] chr=str.toCharArray();
//定义起始下标和结束下标
int stat=0;
int end=chr.length-1;
//遍历数组,反序排列
for(int i=0;i<chr.length;i++){
if(stat<end){
char temp=chr[stat];
chr[stat]=chr[end];
chr[end]=temp;
stat++;
end--;
}
}
//输出结果
System.out.println(new String(chr));
}
作者:
olivor
时间:
2015-11-27 22:58
面试编程题时间限制在多长呢
作者:
Weidan
时间:
2015-11-27 23:59
对你这道题感兴趣然后写了:
package Test03;
import java.util.Arrays;
import java.util.Scanner;
/**
* 编写一个类,其中包含两个排序的方法sort(), 参数不同,当键盘录入的是一串整数,就按照从小到大
* 的顺序输出,如果键盘录入的是一个字符串,就将字符串反序输出。
*
* @author Weidan
*
*/
public class Demo {
public static void main(String[] args) {
//接收键盘输入
Scanner sc = new Scanner(System.in);
String input = sc.next();
try {
//若字符串可以转换为数字
Integer.valueOf(input);
//分割字符串成字符数组
String[] inputStr = input.split("");
//创建新数组
int[] array = new int[inputStr.length];
//把字符串的每个数字存入数组中
for (int i = 0; i < array.length; i++) {
array[i] = Integer.valueOf(inputStr[i]);
}
//排序
sort(array);
} catch (NumberFormatException e) {
//若不可以转换则直接反转输出
System.out.println(sort(input));
}
}
public static void sort(int[] array) {
//冒泡排序
for (int j = 0; j < array.length - 1; j++) {
for (int i = 0; i < array.length - 1 - j; i++) {
if (array[i] > array[i + 1]) {
int temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
}
}
}
//新增一个字符串
String newStr = "";
//把数组中的每个数字存入字符串中
for (int i : array) {
newStr += i;
}
//输出新字符串
System.out.println(newStr);
}
public static String sort(String str) {
//转换为char数组
char[] strArray = str.trim().toCharArray();
//创建新数组
String reverseStr = "";
//反向存储字符串
for (int i = strArray.length - 1; i > -1; i--) {
reverseStr += strArray[i];
}
////返回值
return reverseStr;
}
}
复制代码
作者:
yuhongzhen
时间:
2015-11-28 09:40
olivor 发表于 2015-11-27 22:58
面试编程题时间限制在多长呢
一般40分钟,不过有超时的情况,最好别超时
作者:
欧欧拐
时间:
2015-11-28 09:43
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2