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