annotate src/main/java/alice/test/codesegment/local/bitonicsort/Sort.java @ 345:8f71c3e6f11d

Change directory structure Maven standard
author sugi
date Wed, 16 Apr 2014 18:26:07 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
1 package alice.test.codesegment.local.bitonicsort;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
2
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
3 public class Sort {
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
4
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
5 // this method has "stack overflow" problem
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
6 public static void quickSort(DataList data){
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
7 int[] stack = new int[8192];
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
8 int sp = 0;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
9 int begin = 0;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
10 int end = data.table.length-1; // index is up to length-1
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
11 while(true){
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
12 while(begin < end){
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
13 if (end-begin< 40){
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
14 bubbleSort(data,begin,end);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
15 break;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
16 } else {
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
17 int where = (begin+end)/2;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
18 int pivot = data.table[where];
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
19 data.table[where] = data.table[begin];
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
20 int p = begin;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
21 for (int i=begin+1;i<=end;i++){
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
22 if (data.table[i]<pivot){
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
23 p++;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
24 if (i!=p)data.swap(p,i);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
25 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
26 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
27 data.table[begin] = data.table[p];
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
28 data.table[p] = pivot;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
29 stack[sp++] = p+1;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
30 stack[sp++] = end;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
31 end=p-1;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
32 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
33 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
34 if (sp==0) return;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
35 end = stack[--sp];
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
36 begin = stack[--sp];
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
37
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
38 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
39 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
40
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
41 public static void bubbleSort(DataList data ,int begin,int end){
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
42 for (int i=begin;i<end;i++){
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
43 for (int j=end;j>i;j--){
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
44 if (data.table[i] > data.table[j]){
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
45 data.swap(i,j);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
46 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
47 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
48 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
49
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
50
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
51 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
52
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
53 public static void check(DataList data){
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
54 System.out.println("checking ....");
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
55 for (int i = 0; i< data.table.length-1; i++){
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
56 if (data.table[i] > data.table[i+1]){
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
57 System.out.println("MISS "+data.table[i]+" > "+data.table[i+1]+" Position is "+i);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
58 return;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
59 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
60 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
61 System.out.println("sort is succeed");
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
62 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
63 }