QuickSort
- """
- Python 2018/4/12
- """
- def QuickSort(data):
-
- if len(data) < 2 : # length <2 進行回傳
- return data
- m , mv = len(data)//2 , data[len(data)//2]
- del data[m]
- #找出左右值判斷應放位置,並對左右子串再進行遞迴
- return QuickSort([value for value in data if value < mv])+[mv]+ QuickSort([value for value in data if value > mv])
-
- numbers = [1,2,51,2,48,3,25,95,12,4,3,2,1,5,0,1,5] #打印
- print(QuickSort(numbers))
- /*
- java
- */
- class Main {
- public static void main(String[] args) {
- Integer[] as = {1,2,13,2,12,4,3,4,8,3,2,1};
- ArrayList<Integer> s = quickSort(as);
- System.out.println(s);
-
- }
- static ArrayList<Integer> quickSort(Integer[] integers){
-
- ArrayList<Integer> orignal = new ArrayList(Arrays.asList(integers));
- if(integers.length<2) return orignal; // length <2 進行回傳
- int pivot = integers.length/2,tmp = orignal.get(pivot);
- orignal.remove(pivot);
- ArrayList<Integer> lefts = new ArrayList();
- ArrayList<Integer> rights = new ArrayList();
- ArrayList<Integer> result = new ArrayList();
- //找出左右值判斷應放位置
- for(int i=0;i<orignal.size();i++)
- if(tmp>orignal.get(i)) lefts.add(orignal.get(i));
- else rights.add(orignal.get(i));
- //對左右子串再進行遞迴
- result.addAll(quickSort(lefts.<Integer>toArray(new Integer[lefts.size()])));
- result.add(tmp);
- result.addAll(quickSort(rights.<Integer>toArray(new Integer[rights.size()])));
-
- return result;
- }
- }
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。