如何大小間隔排序

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章