数组排序问题(来着有分)
有一个整形数组,请按最大、最小、次大、次小.....的顺序排列,我想出了下面的想法,别人说我一个数组就够了,干嘛整出来两个,如果有一万个数据呢?有谁还有别的想法,希望大家畅所欲言,谢谢,来着酌情给分的。
[解决办法]
一个数组不好整哇, 冒泡排序(从大到小) 然后取第一(list.get(i))和最后一个(list.get(list.size()-1-i)), 添加到一个新数组.
[解决办法]
楼主的算法很好啊,一个数组确实OK了。
其实就是一种有规律的交换嘛~鼓励!
[解决办法]
要是面试题的话,我会用一次反向的冒泡排序实现,
根据奇数次和偶数次,判断每次取最大和最小值。
我感觉面试的时候,思路清析,代码要简洁
[解决办法]
先排序,再按头尾的顺序依次放到另一个数组中
[解决办法]
楼主想要弄排序,建议看一下相关的算法,如快速排序,堆排序,合并排序,研究研究各个算法的有点,再也不怕你同学说了!
[解决办法]
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)); }}
[解决办法]
学习啊,好厉害
[解决办法]
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; } }}
[解决办法]
学习了
[解决办法]
冒个泡
[解决办法]
顶一下
[解决办法]
牛人啊~
[解决办法]
学习了
[解决办法]
冒泡的精髓呀,学习了
------解决方案--------------------
排序算法吧,好多,
[解决办法]
学习,顺便来拿分