如何大小间隔排序

package com.bjkyhc.hxast.test;

import java.util.ArrayList;  

import java.util.LinkedList;  

import java.util.List;  

  

/**  

08  * 描述:有一组数(43,14,6,9,3,27,38,19,5等)  

09  * 排序:将最大的放在第一位,最小放在第二位,剩下的最大的放在第三位,最小的放在第四位,以此类推  

10  * 输出排序结果  

11  * @author heng.ai  

12  *  

13  */ 

  

 public class Test {  

        

    public static void main(String[] args) {  

        Test sortNumber = new Test();  

       Integer[] strs = {43,14,6,9,3,27,38,19,5};  

        List<Integer> results = sortNumber.sortStrings(sortNumber.sort(strs));  
        System.out.println("");
        System.out.println("最后的结果:"); 
        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>();  
       /*这里先普及一下ArrayList和LinkedList基本知识
        * 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构
        * 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
        * 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
        *  java.util.LinkedList 类实现栈操作 栈是个后进先出的线性表*/
        for(Integer str : strs){  

           results.push(str);  

       }  
      
         while(!results.isEmpty()){  

            lists.add(results.pop());  //取栈第一个数 Pops an element from the stack represented by this list

           Integer res = results.pollLast(); //取栈最后一个数 Retrieves and removes the last element of this list

            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;  

              }  

           }  

       } 
        System.out.println("从小到大排序后的数组:" ); 
        for(Integer result : strs){  

            System.out.print(result + " ");  

        } 

       return strs;  

   }  

   

 } 
 
从小到大排序后的数组:
3 5 6 9 14 19 27 38 43 
最后的结果:
43 3 38 5 27 6 19 9 14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值