zoukankan      html  css  js  c++  java
  • 描述:有一组数(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----这个是最终结果

     
  • 相关阅读:
    我爱java系列之---【微服务间的认证—Feign拦截器】
    我爱java系列之---【设置权限的三种解决方案】
    581. Shortest Unsorted Continuous Subarray
    129. Sum Root to Leaf Numbers
    513. Find Bottom Left Tree Value
    515. Find Largest Value in Each Tree Row
    155. Min Stack max stack Maxpop O(1) 操作
    painting house
    Minimum Adjustment Cost
    k Sum
  • 原文地址:https://www.cnblogs.com/zhangqf/p/6283103.html
Copyright © 2011-2022 走看看