一道面试题:对一个数组进行排序,要求第一个最大、第二个最小

时间:2022-07-13 14:35:54 面试 我要投稿
  • 相关推荐

一道面试题:对一个数组进行排序,要求第一个最大、第二个最小

package test;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Collections;
public class TestSort {

一道面试题:对一个数组进行排序,要求第一个最大、第二个最小

/**
* @param args
*/
static int a[] = {12 ,24 ,32, 28,25 ,60 ,48, 9, 15} ;
public static void main(String[] args) {
for(int i=0; iSystem.out.print(a[i]+"\t") ;
}
System.out.println();
Arrays.sort(a) ;//对数组进行排序
for(int i=0; iSystem.out.print(a[i]+"\t") ;
}
System.out.println();
for(int i=a.length-1; i>=0; i--){
System.out.print(a[i]+"\t") ;
}
System.out.println();
l_sort2(a);
for(int i=0; iSystem.out.print(a[i]+"\t") ;
}
System.out.println();
l_sort(a);
for(int i=0; iSystem.out.print(a[i]+"\t") ;
}
System.out.println();
String bitData ="1111010101010010101" ;
formatInt(bitData);
}
public static void l_sort(int a[]){//对排序好的数组进行两边弹出
Arrays.sort(a) ;
LinkedList b = new LinkedList();
for(int i=0; ib.add(a[i]) ;
}
boolean flag = true ;
for(int i=0 ;iif(flag){
a[i] = (Integer)b.removeLast() ;
}else{
a[i] = (Integer)b.removeFirst() ;
}
flag = !flag ;
}
}
public static void l_sort2(int a[]){//用的另一种方法实现
boolean flag = true ;
for(int i=0 ;iif(flag){
for(int j=a.length-1 ;j>i ;j--){
if(a[j]>a[j-1]){
int team = a[j] ;
a[j] = a[j-1] ;
a[j-1] =team ;
}
}
}else{
for(int j=a.length-1 ;j>i ;j--){
if(a[j]<=a[j-1]){
int team = a[j] ;
a[j] = a[j-1] ;
a[j-1] =team ;
}
}
}
flag = !flag ;
}
}

下面的方法是我额外做的一个0、1字符转换成十进制
//二进制数转换成十进制数
public static void formatInt(String bitData){
double intData = 0 ;
for(int i=0 ;iintData = intData + Integer.valueOf(bitData.substring(i,i+1))*Math.pow(2, bitData.length()-i-1);
}
System.out.println(String.valueOf(intData).substring(0,(String.valueOf(intData).length()-2)));
}
}

【一道面试题:对一个数组进行排序,要求第一个最大、第二个最小】相关文章:

一道腾讯的面试题07-09

一道Java面试题,题目如下07-11

一道很不错的人力资源面试题07-11

第一个情人节文案02-01

一个非常经典的经理面试题07-11

为什么京东商城上的产品列表可以「按照评论数」进行排序07-11

开学第一个星期作文(精选5篇)03-22

开学第一个月的总结02-24

对百度、腾讯、阿里巴巴三家公司进行排序07-10

年会第一个节目串词(精选7篇)01-27