日期:2014-05-20  浏览次数:20791 次

请教一道面试题的解决方法?(高手请进)
已知一组数字:21,25,11,32,12,35,55,77,66要求按以下规则进行排序:第一个数最大,第二个数最小,第三个数字是剩下中的最大的,第四个数字是剩下的最小的,依次类推.请设计一个字符界面的程序解决之.

------解决方案--------------------
构造一个二叉树进行求解。
21
11 25
12 32
35
55
77
66
------解决方案--------------------
/**
* 已知一组数字:21,25,11,32,12,35,55,77,66要求按以下规则进行排序:
* 第一个数最大,第二个数最小,第三个数字是剩下中的最大的, 第四个数字是剩下的最小的,依次类推.请设计一个字符界面的程序解决之.
*
* @param args
* 要排序的 LinkedList
* @param returnList
* 要返回的List 传给个新的List就可以
* @return 按要求排好序的List
*/
public static List sortInt(LinkedList args, List returnList) {
Collections.sort(args);
if (args.size() > = 2) {
returnList.add(args.getLast());
returnList.add(args.getFirst());
args.removeFirst();
args.removeLast();
sortInt(args, returnList);
} else {
returnList.add(args.getFirst());
}
return returnList;
}
------解决方案--------------------
什么公司得面题啊,怎么很多人再问。。
------解决方案--------------------
public static void orderNumber(String str){
String[] strTemp=str.split( ", ");
String temp= " ";
for(int i=0;i <strTemp.length;i++){
for(int j=i+1;j <strTemp.length;j++){
if(Integer.parseInt(strTemp[i])> Integer.parseInt(strTemp[j])){
temp=strTemp[i];
strTemp[i]=strTemp[j];
strTemp[j]=temp;
}
}
}
if(strTemp.length%2==0){
for(int k=0;k <strTemp.length/2;k++){
System.out.println(strTemp[strTemp.length-1-k]);
System.out.println(strTemp[k]);
}
}
else{
for(int k=0;k <strTemp.length/2+1;k++){
if(strTemp.length-1-k==k){
System.out.println(strTemp[strTemp.length-1-k]);
break;
}
System.out.println(strTemp[strTemp.length-1-k]);
System.out.println(strTemp[k]);
}
}
}
------解决方案--------------------
昨天见过这题的。。
------解决方案--------------------
其实关键是lz把算法的思想掌握了就可以了。
1、排序(比如递减序列)
2、按以下方式生成新序列(假如是递减序列):
两个下标i、j分别指向第一个和最后一个元素
k为新序列的下标,初始值为0
new[k] = old[i];
k++;i++;
new[k] = old[j];
k++;j--;
重复以上操作,直到i、j相遇,程序停止。
------解决方案--------------------
关注
------解决方案--------------------
void p(int[] s)
{
Arrays.sort(s);
int[] a = new int[s.length];
int shead = 0,stail = s.length - 1,ahead = 0;
for(int i = 0;i <s.length/2;i++)
{
a[ahead++] = s[stail--];

a[ahead++] = s[shead++];

}
if(s.length%2 != 0)
a[s.length-1] = s[s.length/2];
for(int b:a)
System.out.print(b+ ", ");
}
------解决方案--------------------
。。。这个问题的另外一种思路是,放到一个TreeSet里面,一个一个取就对了。实现一个campareto接口
------解决方案--------------------
public static void main(String[] args) {
int array[] = {21,25,11,32,12,35,55,77,66};
mySort(array);
}
public static void mySort(int[] arr){