首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

数组排序有关问题(来着有分)

2011-12-27 
数组排序问题(来着有分)有一个整形数组,请按最大、最小、次大、次小.....的顺序排列,我想出了下面的想法,别人

数组排序问题(来着有分)
有一个整形数组,请按最大、最小、次大、次小.....的顺序排列,我想出了下面的想法,别人说我一个数组就够了,干嘛整出来两个,如果有一万个数据呢?有谁还有别的想法,希望大家畅所欲言,谢谢,来着酌情给分的。

[解决办法]
一个数组不好整哇, 冒泡排序(从大到小) 然后取第一(list.get(i))和最后一个(list.get(list.size()-1-i)), 添加到一个新数组.
[解决办法]
楼主的算法很好啊,一个数组确实OK了。

其实就是一种有规律的交换嘛~鼓励!
[解决办法]
要是面试题的话,我会用一次反向的冒泡排序实现,
根据奇数次和偶数次,判断每次取最大和最小值。

我感觉面试的时候,思路清析,代码要简洁
[解决办法]
先排序,再按头尾的顺序依次放到另一个数组中
[解决办法]
楼主想要弄排序,建议看一下相关的算法,如快速排序,堆排序,合并排序,研究研究各个算法的有点,再也不怕你同学说了!
[解决办法]

Java code
public class Test {    public static void main(String[] args) {        int[] array = { 5, 2, 6, 4, 3, 1, 8, 10, 9, 7 };        for (int i = 0; i < array.length; i++) {            int flag = (i + 1) % 2;            int tmp = array[i];            int point = i;            for (int j = i; j < array.length; j++) {                if (flag != 0) {                    if (array[j] > tmp) {                        tmp = array[j];                        point = j;                    }                } else {                    if (array[j] < tmp) {                        tmp = array[j];                        point = j;                    }                }            }            if (i != point) {                array[i] = array[i] ^ array[point];                array[point] = array[i] ^ array[point];                array[i] = array[i] ^ array[point];            }        }        System.out.println(Arrays.toString(array));    }}
[解决办法]
学习啊,好厉害
[解决办法]
Java code
package com.cn.sort;public class FindLastTwo {    public static void main(String[] args) {        int[] a = new int[]{9,10,2,1};        int lastTwoNum = findLastTwo(a);        System.out.println(lastTwoNum);    }    //时间复杂度为O(n)    private static int findLastTwo(int[] a) {        int min = Integer.MAX_VALUE;        int lastTwo = Integer.MAX_VALUE;        if (a.length >= 2) {                if (a[0] < a[1]) {                    min = a[0];                    lastTwo = a[1];                } else {                    min = a[1];                    lastTwo = a[0];                }        } else {            return Integer.MIN_VALUE;        }        for (int i = 2; i < a.length; i++) {            if (a[i] < min) {                lastTwo = min;                min = a[i];            } else if (a[i] < lastTwo) {                lastTwo = a[i];            }        }        if (min <= lastTwo) {            return lastTwo;        } else  {            return min;        }    }}
[解决办法]
学习了
[解决办法]
冒个泡
[解决办法]
顶一下
[解决办法]
牛人啊~
[解决办法]
学习了
[解决办法]
冒泡的精髓呀,学习了
------解决方案--------------------


排序算法吧,好多,
[解决办法]
学习,顺便来拿分

热点排行