一道面试题,对一个数组进行排序,第一个最大,第二个最小,第三个次大,一次类推

转载 2012年03月27日 01:31:57

package test;

import java.util.Arrays;

public class TestSort {
 static int[] a = { 12, 24, 32, 28, 25, 60, 48, 9, 15 };

 public static void main(String[] args) {
  for (int i = 0; i < a.length; i++) {
   System.out.print(a[i] + ","); //打印最开始的数组
  }
  System.out.println();                //换行
  Arrays.sort(a); // 对指定 int 型数组的指定范围按数字升序进行排序
  for (int i = 0; i < a.length; i++) {
   System.out.print(a[i] + ",");   // 打印升序排列的数组
  }
  System.out.println();
  for (int i = a.length - 1; i >= 0; i--) {
   System.out.print(a[i] + ",");   // 打印降序排列的数组
  }
  System.out.println();
  tsort(a);                           //按照题目的要求进行排序
  for (int i = 0; i < a.length; i++) {    
   System.out.print(a[i] + ",");     //排序后打印出来
  }

 }

 public static void tsort(int[] a) { // 对排序好的数组进行两边弹出
  boolean flag = true;
  for (int i = 0; i < a.length - 1; i++) {
   if (flag) {
    for (int j = a.length - 1; j > i; j--) {   // flag刚开始为true,执行一次降序
     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--) {          //然后flag变为false,执行一次升序
     if (a[j] <= a[j - 1]) {
      int team = a[j];
      a[j] = a[j - 1];
      a[j - 1] = team;
     }
    }
   }
   flag = !flag;
  }
 }

}

 

相关文章推荐

HashMap作为缓存时的性能优化及与redis,EhCache等的应用比较

系统中在用hashmap作为缓存,所以不得不考虑一些因素:多线程并发,最大容量,性能,以及与redis,EhCache等的优劣比较 1、容量的问题: 源码中,HashMap的最大容量为1 2、多...

java编程:将数组的第一个为最大第二个为最小以此类推

import java.util.Scanner; public class Max_Min { public static void main(String[] args) { int...

排序,要求第一个数最大,第二个数最小,第三个数第二大,第四个数第二小,以此类推

import java.util.Arrays; public class Sort { public static void main(String[] args) { int a[] = ...

数据结构面试题总结1——数组:求最大、次大值

一般大家一开始想到的办法就是一次循环,记录下最大值和最小值。或者就是用两次冒泡,找到最大值和次大值。 这两种方法实践复杂度差不多都是O(2n),如果数组很长,效率还是不够高的。 注意:直接排序...
  • B_Allen
  • B_Allen
  • 2015年05月28日 21:03
  • 813

求无序数组的(max+min)最大的子数组------为学论坛上面的一道面试题

原题目链接:http://www.51weixue.com/thread-398-1-1.html 题目: 杭州某公司的面试题,哪家可自己猜,不方便说;算是其中挺难的题了,当场能做出来的极少;出出...
  • gzzheyi
  • gzzheyi
  • 2013年03月04日 16:57
  • 1149

对如下数组排序 {12,1,23,24,235,237,231,571,575,57} 排序规则如下:先找第一位,比较大的,如果相同,接着按第二位找,找第二位比较大的,依次类推,进行排序

package test.sort; public class Test1 {     //对如下数组排序 {12,1,23,24,235,237,231,571,575,57}     /...

堆的数据结构能够使得堆顶总是维持最大(对于大根堆)或最小(对于小根堆),给定一个数组,对这个数组进行建堆,则平均复杂度是多少?如果只是用堆的 push 操作,则一个大根堆依次输入 3,7,2,4,1,5,8 后,得到的堆的结构示意图是下述图表中的哪个?

堆的数据结构能够使得堆顶总是维持最大(对于大根堆)或最小(对于小根堆),给定一个数组,对这个数组进行建堆,则平均复杂度是多少?如果只是用堆的 push 操作,则一个大根堆依次输入 3,7,2,4,1,...

华为机试题:输入两个超长整型构成的字符串,其间使用一个空格分隔,每个字符串最大长度为100个字符。求第一个整数除以第二个整数以后的余数。。

问题描述: 输入两个超长整型构成的字符串,其间使用一个空格分隔,每个字符串最大长度为100个字符。求第一个整数除以第二个整数以后的余数。。 运行时间限制: 无限制 内存限制: 无限制 ...
  • cvMat
  • cvMat
  • 2016年09月01日 21:16
  • 811
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一道面试题,对一个数组进行排序,第一个最大,第二个最小,第三个次大,一次类推
举报原因:
原因补充:

(最多只允许输入30个字)