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

转载 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;
  }
 }

}

 

【程序35】 ArrayChange.java 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

public class ArrayChangeApp { /** * @param args */ public static void main(String[] args) { ...
  • u014657292
  • u014657292
  • 2014年04月11日 18:28
  • 2045

输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 package demo40; import java.util.Scanner; /** * 输入数组,最大的与第一个...
  • bj15114817915
  • bj15114817915
  • 2017年03月29日 14:07
  • 919

C语言程序设计 翁恺 oj3

这个题目写了好久,比较臃肿。/* 题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0...
  • m0_37335472
  • m0_37335472
  • 2017年01月28日 21:05
  • 100

用户输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

用户输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。...
  • zewensong
  • zewensong
  • 2015年03月07日 15:36
  • 4406

网易云课堂java程序设计(第四周编程作业)

题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0 输入格式: 两个整数,第一个表示n,第二个表示m。...
  • woshi512
  • woshi512
  • 2014年12月30日 15:41
  • 1354

[经典面试题]排序数组中绝对值最小元素

【题目】 题目为: 有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n))...
  • SunnyYoona
  • SunnyYoona
  • 2015年01月29日 20:06
  • 1995

求数组中未出现的最小正整数

【题目】: 给定一个无序整型数组arr,找到数组中未出现的最小正整数。要求时间复杂度为O(N),空间复杂度为O(1)。例如:arr=[-1,2,3,4]。返回1。arr=[1,2,3,4]。返回5。【...
  • zxc123e
  • zxc123e
  • 2015年10月23日 16:59
  • 3693

数组最大元素与最后一位元素进行交换最小元素与第一位元素进行交换,

public class MyDemo05 { public static void main(String[] args) { /*第三题:分析以下需求,并用代码实现: (1)定义一个int类型的一...
  • qq_32048567
  • qq_32048567
  • 2017年04月25日 22:03
  • 155

同时得到最大最小值的最优算法

首先,我们将一对输入元素进行比较,然后把较小的值与最小值比较,较大值与最大值比较。这样,每两个元素共需3次比较。 如果n是奇数,就把最大最小值的初值都设为第一个元素的值,然后成对处理剩下的元素;如果n...
  • huanle543
  • huanle543
  • 2015年11月18日 08:51
  • 1948

寻找一个数组中的最大和最小数

工作一段快两年了,感觉之前学的数据结构和算法基本忘得差不多了,最近一段时间准备复习一下相关知识。有一个求数组中最大和最小数的题目,基本的思路是遍历一遍数组,然后每个一个元素都和最大值和最小值比较,时间...
  • tanghaiyu777
  • tanghaiyu777
  • 2017年02月16日 18:57
  • 1053
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一道面试题,对一个数组进行排序,第一个最大,第二个最小,第三个次大,一次类推
举报原因:
原因补充:

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