描述:有一组数(43,14,6,9,3,27,38,19,5等) 排序:将最大的放在第一位,最小放在第二位,剩下的最大的放在第三位,最小的放在第四位,以此类推 输出排序结果

//方法1:用到的是LinkedList的知识点

//方法2:用的是算法

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
/**
* 描述:有一组数(43,14,6,9,3,27,38,19,5等)
* 排序:将最大的放在第一位,最小放在第二位,剩下的最大的放在第三位,最小的放在第四位,以此类推
* 输出排序结果
*/


public class SortNumber {

public static void main(String[] args) {
SortNumber sortNumber = new SortNumber();
Integer[] strs = {43,14,6,9,3,27,38,19,5};
Integer [] ints=sortNumber.sort(strs);
List<Integer> results = sortNumber.sortStrings(ints);
for(Integer result : results){
System.out.print(result + " ");
}
}

private List<Integer> sortStrings(Integer[] strs) {
List<Integer> lists = new ArrayList<Integer>();
LinkedList<Integer> results = new LinkedList<Integer>();
//strs [3, 5, 6, 9, 14, 19, 27, 38, 43]
for(Integer str : strs){
results.push(str);
//[43,38,27, 19, 14, 9, 6, 5,3]
}
while(!results.isEmpty()){
lists.add(results.pop());//这个是取首元素
Integer res = results.pollLast();//这个是去最后一个元素
if(res != null){
lists.add(res);
}
}
return lists;
}

//从小到大排序
private Integer[] sort(Integer[] strs){
int temp = 0;
for(int i = 0; i < strs.length - 1; i++){
for(int j = i + 1; j < strs.length; j++){
if(strs[i] > strs[j]){
temp = strs[i];
strs[i] = strs[j];
strs[j] = temp;
}
}
}
return strs;
}

}

//方法2:

package everyDay;

import java.util.Arrays;

public class SortTest {
/**
* 实现思路:1.数组的排序小大
* 2.判断数组奇偶
* 2.1偶数:除2,小前半部分b数组,大后半部分c数组长度
* 2.2 再分别把a的值给b和c,又两个循环
* 2.3然后第3个循环以a的长度循环奇偶赋值给a,
* 2.4最后循环输出a的值即可
* @param args
*/
public static void main(String[] args) {
//int a[] = { 4, 5, 6, 3, 2, 5, 7, 9, 3 };
int a[] = { 43,14,6,9,3,27,38,19,5 };
Arrays.sort(a);////数组的排序方法

////
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
//System.out.print(" ");
}
System.out.print(" ");
//
if (a.length % 2 == 0) {
int b[] = new int[a.length / 2];
int c[] = new int[a.length / 2];
for (int i = 0; i < b.length; i++) {
b[i] = a[i];
}
for (int i = c.length; i < a.length; i++) {
c[i - c.length] = a[i];
}
for (int i = 0; i < a.length; i++) {
if (i % 2 == 0) {//0,2,4,6
a[i] = c[c.length - i / 2 - 1];
} else {
a[i] = b[i / 2];
}
}
} else {
int b[] = new int[a.length / 2];
int c[] = new int[a.length / 2 + 1];
for (int i = 0; i < b.length; i++) {
b[i] = a[i];
}
for (int i = b.length; i < a.length; i++) {
c[i - b.length] = a[i];
}
for (int i = 0; i < a.length; i++) {
if (i % 2 == 0) {
a[i] = c[c.length - i / 2 - 1];
} else {
a[i] = b[i / 2];
}
}
}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
}
}

 
输出结果:

3 5 6 9 14 19 27 38 43
43 3 38 5 27 6 19 9 14----这个是最终结果

 
原文地址:https://www.cnblogs.com/zhangqf/p/6283103.html