一道面试题目 数组排序 数组包含 1,9,10,3,20,4,6,5,19等数字,写一个方法实现 数组的排序是:最大+最小+次大+次小+。。这样排序。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public static void main(String[] args) { int[] array={4,3,6,7,2,9}; int max=array[0]; int tap; for (int i = 0; i < array.length; i++) { max=array[i]; for (int j = i; j < array.length; j++) { if(max<array[j]){ tap=array[i]; array[i]=array[j]; array[j]=tap; } } } } 只做了输出,要得到数组,可以将输出赋值给一个数组public static void main(String[] args){ int[] arr = {1,9,10,3,20,4,6,5,19}; Arrays.sort(arr); int length = arr.length; //循环长度 int forLength = 0; //数组个数奇偶 boolean odd = false; if((length & 1) != 0){ forLength = length /2 + 1; odd = true; }else { forLength = length / 2 ; } for(int i = 0 ;i < forLength ; i ++){ if(odd && (i == forLength - 1)){ System.out.println(arr[i]); }else System.out.println(arr[length-1-i]+" -- "+arr[i]); } } 写个 用 集合类的 。。 /** * @param args */ public static void main(String[] args) { int[] array = { 1, 9, 10, 3, 20, 4, 6, 5, 19, 25 }; Arrays.sort(array); List list = new ArrayList(); for (int i = array.length - 1; i >= 0; i--) { list.add(array[i]); } while (list.size() > 0) { System.out.println((Integer) list.get(0)); if (list.size() == 1) return; System.out.println((Integer) list.get(list.size() - 1)); list.remove(list.size() - 1); if (list.size() == 0) return; list.remove(0); } } 就是这样 很简单 public static void main(String[] args) { int[] data = { 1, 9, 10, 3, 20, 4, 6, 5, 19 }; Arrays.sort(data); System.out.println(Arrays.toString(data)); List<Integer> list = new ArrayList<Integer>(); for (int i = 0, j = data.length - 1; i <= j; i++, j--) { if (i != j) { list.add(data[j]); list.add(data[i]); } else { list.add(data[i]); } } System.out.println(list); } 用数组就是这样 public static void main(String[] args) { int[] data = { 1, 9, 10, 3, 20, 4, 6, 5, 19 }; Arrays.sort(data); System.out.println(Arrays.toString(data)); int[] result = new int[data.length]; int p = 0; for (int i = 0, j = data.length - 1; i <= j; i++, j--) { if (i != j) { result[p] = data[j]; result[p + 1] = data[i]; } else { result[p] = data[i]; } p += 2; } System.out.println(Arrays.toString(result)); } 类似冒泡法,冒上来的数是我们所期望的数public class Main { public static void main(String[] args) { int[] data = { 1, 9, 10, 3, 20, 4, 6, 5, 19 }; for(int i=0;i<data.length-1;i++){//i为上浮到的位置 for(int j=data.length-1;j>i;j--){ if(i%2==0){//大数 if(data[j]>data[i]){//把大数上浮 int k=data[i]; data[i]=data[j]; data[j]=k; } }else{//小数 if(data[j]<data[i]){//把大数上浮 int k=data[i]; data[i]=data[j]; data[j]=k; } } } } for(int i=0;i<data.length;i++){//打印结果 System.out.println(""+data[i]); } }} http://topic.csdn.net/u/20091029/15/723ca48d-78e2-46b5-9a3e-cb51549e7a52.html前几天刚出现过……………… 用数组实现 public static void main(String[] args) { int[] array = { 1, 9, 10, 3, 20, 4, 6, 5, 19 }; Arrays.sort(array); int[] newArray = new int[array.length]; int start = 0; int end = array.length; for (int i = 0; i < array.length; i++) { if (i % 2 == 0) { newArray[i] = array[end - 1]; end--; } else { newArray[i] = array[start]; start++; } } System.out.println(Arrays.toString(newArray)); } int[] arr = {1,5,9,6,3,4,2,7}; Arrays.sort(arr); List<Integer> list = new ArrayList<Integer>(); int size = arr.length; for(int i=0; i<size/2; i++){ list.add(arr[size-1-i]); list.add(arr[i]); } if(size%2!=0){ list.add(arr[size/2]); } System.out.println(list.toString()); }} 不是很复杂,但不知道是否还有更简单的public class TestSort { public static void main(String[] args){ int[] a={1,9,10,3,20,4,6,5,19}; System.out.print("原始数组:"); for(int i:a){ System.out.print(i+"\t"); } System.out.println(); System.out.print("排 序 后:"); Arrays.sort(a); for(int i:a){ System.out.print(i+"\t"); } System.out.println(); //整理 int[] b=new int[a.length]; int[] index={0,1,a.length-1,-1}; for(int i=0,m,len=a.length;i<len;i++){ m=i%2==0?2:0; b[i]=a[index[m]]; index[m]+=index[m+1]; } System.arraycopy(b,0,a,0,b.length); //整理后 System.out.print("整 理 后:"); for(int i:a){ System.out.print(i+"\t"); } }} /*数组包含 1,9,10,3,20,4,6,5,19等数字,写一个方法实现 数组的排序是: 最大+最小+次大+次小+。。这样排序*/class ArrSort{ public static int[] arrSort(int [] arr) { int []arr2=new int[arr.length]; int t; for(int i=0;i<arr.length;i++) { for(int j=i;j<arr.length;j++) { if(arr[i]>arr[j]) { t=arr[i]; arr[i]=arr[j]; arr[j]=t; } } } for(int i=0;i<arr.length/2;i++) { arr2[i*2]=arr[arr.length-1-i]; arr2[i*2+1]=arr[i]; } if(arr.length%2==1) { arr2[arr.length-1]=arr[arr.length/2]; } return arr2; } public static void main(String []args) { int []arr={1,9,10,3,20,4,6,5,19}; int []arr2=new int [arr.length]; System.out.println("the array before sort:"); for(int i=0;i<arr.length;i++) { System.out.print(arr[i]+" "); } arr2=arrSort(arr); for(int i=0;i<arr.length;i++) { System.out.print(arr[i]+" "); } System.out.println(); System.out.println("the array afeter sort:"); for(int i=0;i<arr2.length;i++) { System.out.print(arr2[i]+" "); } }} private void test() { int[] array = {1,9,10,3,20,4,6,5,19}; List<Integer> list = new ArrayList<Integer>(); Arrays.sort(array); int i = 0; int j = array.length - 1; while((i != j) && (i + 1 != j)) { list.add(array[j--]); list.add(array[i++]); } if (i == j) { list.add(array[i]); } for (Integer listItem : list) { System.out.println(listItem); } }经测试,结果正确 排序之后,根据最大与最小的序号之和为(size - 1)进行输出。 定义一个数组, 先sort一下!把下标为0.2.4.。。放进一个数组把1.3.5.。。放进一个数组 convert一下!再插到第个数组中就行了! C# 实现//数组包含 1,9,10,3,20,4,6,5,19等数字,写一个方法实现 数组的排序是: //最大+最小+次大+次小+。。这样排序。public static int[] SpecialSort(int[] arr){ Array.Sort(arr); List<int> ret = new List<int>(); for (int i = 0; i < (arr.Length +1)/2; i++) { ret.Add(arr[arr.Length - i - 1]); if (i < arr.Length -i -1) { ret.Add(arr[i]); } } int[] temp = ret.ToArray(); return temp;} 如何把主程序类中创建的对象 传给成员方法?[加分] 如何将一段文字存成十六进制格式的文本 linux下java项目的部署 java1.5与1.4共享问题? 请问TIJ第三版第三章练习6是什么意思? 求个二层循环 java 面试题,不太会! 大地jsp免费空间申请正在征集支持数据库建议 谁能介绍一下Runtime.exec()的参数的的用法? 初学者的一点迷惑请各位指教 请高手帮忙写下大数的四则运算 帮我看下程序 还是有关数组的。
int[] array={4,3,6,7,2,9};
int max=array[0];
int tap;
for (int i = 0; i < array.length; i++) {
max=array[i];
for (int j = i; j < array.length; j++) {
if(max<array[j]){
tap=array[i];
array[i]=array[j];
array[j]=tap;
}
}
}
}
int[] arr = {1,9,10,3,20,4,6,5,19};
Arrays.sort(arr);
int length = arr.length;
//循环长度
int forLength = 0;
//数组个数奇偶
boolean odd = false;
if((length & 1) != 0){
forLength = length /2 + 1;
odd = true;
}else {
forLength = length / 2 ;
}
for(int i = 0 ;i < forLength ; i ++){
if(odd && (i == forLength - 1)){
System.out.println(arr[i]);
}else
System.out.println(arr[length-1-i]+" -- "+arr[i]);
}
}
* @param args
*/
public static void main(String[] args)
{
int[] array = { 1, 9, 10, 3, 20, 4, 6, 5, 19, 25 }; Arrays.sort(array); List list = new ArrayList();
for (int i = array.length - 1; i >= 0; i--)
{
list.add(array[i]);
} while (list.size() > 0)
{ System.out.println((Integer) list.get(0));
if (list.size() == 1)
return;
System.out.println((Integer) list.get(list.size() - 1));
list.remove(list.size() - 1);
if (list.size() == 0)
return;
list.remove(0);
} }
int[] data = { 1, 9, 10, 3, 20, 4, 6, 5, 19 };
Arrays.sort(data);
System.out.println(Arrays.toString(data));
List<Integer> list = new ArrayList<Integer>();
for (int i = 0, j = data.length - 1; i <= j; i++, j--) {
if (i != j) {
list.add(data[j]);
list.add(data[i]);
} else {
list.add(data[i]);
}
}
System.out.println(list);
}
int[] data = { 1, 9, 10, 3, 20, 4, 6, 5, 19 };
Arrays.sort(data);
System.out.println(Arrays.toString(data));
int[] result = new int[data.length];
int p = 0;
for (int i = 0, j = data.length - 1; i <= j; i++, j--) {
if (i != j) {
result[p] = data[j];
result[p + 1] = data[i];
} else {
result[p] = data[i];
}
p += 2;
}
System.out.println(Arrays.toString(result));
}
int[] data = { 1, 9, 10, 3, 20, 4, 6, 5, 19 };
for(int i=0;i<data.length-1;i++){//i为上浮到的位置
for(int j=data.length-1;j>i;j--){
if(i%2==0){//大数
if(data[j]>data[i]){//把大数上浮
int k=data[i];
data[i]=data[j];
data[j]=k;
}
}else{//小数
if(data[j]<data[i]){//把大数上浮
int k=data[i];
data[i]=data[j];
data[j]=k;
}
}
}
}
for(int i=0;i<data.length;i++){//打印结果
System.out.println(""+data[i]);
}
}
}
public static void main(String[] args) {
int[] array = { 1, 9, 10, 3, 20, 4, 6, 5, 19 };
Arrays.sort(array);
int[] newArray = new int[array.length];
int start = 0;
int end = array.length;
for (int i = 0; i < array.length; i++) {
if (i % 2 == 0) {
newArray[i] = array[end - 1];
end--;
} else {
newArray[i] = array[start];
start++;
}
}
System.out.println(Arrays.toString(newArray));
}
int[] arr = {1,5,9,6,3,4,2,7};
Arrays.sort(arr);
List<Integer> list = new ArrayList<Integer>();
int size = arr.length;
for(int i=0; i<size/2; i++){
list.add(arr[size-1-i]);
list.add(arr[i]);
}
if(size%2!=0){
list.add(arr[size/2]);
}
System.out.println(list.toString());
}
}
public class TestSort {
public static void main(String[] args){
int[] a={1,9,10,3,20,4,6,5,19};
System.out.print("原始数组:");
for(int i:a){
System.out.print(i+"\t");
}
System.out.println();
System.out.print("排 序 后:");
Arrays.sort(a);
for(int i:a){
System.out.print(i+"\t");
}
System.out.println();
//整理
int[] b=new int[a.length];
int[] index={0,1,a.length-1,-1};
for(int i=0,m,len=a.length;i<len;i++){
m=i%2==0?2:0;
b[i]=a[index[m]];
index[m]+=index[m+1];
}
System.arraycopy(b,0,a,0,b.length);
//整理后
System.out.print("整 理 后:");
for(int i:a){
System.out.print(i+"\t");
}
}
}
写一个方法实现 数组的排序是:
最大+最小+次大+次小+。。这样排序*/
class ArrSort
{
public static int[] arrSort(int [] arr)
{
int []arr2=new int[arr.length];
int t;
for(int i=0;i<arr.length;i++)
{
for(int j=i;j<arr.length;j++)
{
if(arr[i]>arr[j])
{
t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
for(int i=0;i<arr.length/2;i++)
{
arr2[i*2]=arr[arr.length-1-i];
arr2[i*2+1]=arr[i];
}
if(arr.length%2==1)
{
arr2[arr.length-1]=arr[arr.length/2];
}
return arr2;
}
public static void main(String []args)
{
int []arr={1,9,10,3,20,4,6,5,19};
int []arr2=new int [arr.length];
System.out.println("the array before sort:");
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+" ");
}
arr2=arrSort(arr);
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+" ");
}
System.out.println();
System.out.println("the array afeter sort:");
for(int i=0;i<arr2.length;i++)
{
System.out.print(arr2[i]+" ");
}
}
}
int[] array = {1,9,10,3,20,4,6,5,19};
List<Integer> list = new ArrayList<Integer>();
Arrays.sort(array);
int i = 0;
int j = array.length - 1;
while((i != j) && (i + 1 != j)) {
list.add(array[j--]);
list.add(array[i++]);
}
if (i == j) {
list.add(array[i]);
}
for (Integer listItem : list) {
System.out.println(listItem);
}
}经测试,结果正确
再插到第个数组中就行了!
//数组包含 1,9,10,3,20,4,6,5,19等数字,写一个方法实现 数组的排序是:
//最大+最小+次大+次小+。。这样排序。
public static int[] SpecialSort(int[] arr)
{
Array.Sort(arr); List<int> ret = new List<int>();
for (int i = 0; i < (arr.Length +1)/2; i++)
{
ret.Add(arr[arr.Length - i - 1]);
if (i < arr.Length -i -1)
{
ret.Add(arr[i]);
}
}
int[] temp = ret.ToArray();
return temp;
}