diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/alice/test/codesegment/local/bitonicsort/Sort.java	Wed Apr 16 18:26:07 2014 +0900
@@ -0,0 +1,63 @@
+package alice.test.codesegment.local.bitonicsort;
+
+public class Sort {
+	
+	// this method has "stack overflow" problem
+	public static void quickSort(DataList data){
+		int[] stack = new int[8192];
+		int sp = 0;
+		int begin = 0;
+		int end = data.table.length-1; // index is up to length-1
+		while(true){
+			while(begin < end){
+				if (end-begin< 40){
+					bubbleSort(data,begin,end);
+					break;
+				} else {
+					int where = (begin+end)/2;
+					int pivot = data.table[where];
+					data.table[where] = data.table[begin];
+					int p = begin;
+					for (int i=begin+1;i<=end;i++){
+						if (data.table[i]<pivot){
+							p++;
+							if (i!=p)data.swap(p,i);
+						}
+					}
+					data.table[begin] = data.table[p];
+					data.table[p] = pivot;
+					stack[sp++] = p+1;
+					stack[sp++] = end;
+					end=p-1;
+				}
+			}
+			if (sp==0) return;
+			end = stack[--sp];
+			begin = stack[--sp];
+			
+		}
+	}
+	
+	public static void bubbleSort(DataList data ,int begin,int end){
+		for (int i=begin;i<end;i++){
+			for (int j=end;j>i;j--){
+				if (data.table[i] > data.table[j]){
+					data.swap(i,j);
+				}
+			}
+		}
+		
+		
+	}
+	
+	public static void check(DataList data){
+		System.out.println("checking ....");
+		for (int i = 0; i< data.table.length-1; i++){
+			if (data.table[i] > data.table[i+1]){
+				System.out.println("MISS "+data.table[i]+" > "+data.table[i+1]+" Position is "+i);
+				return;
+			}
+		}
+		System.out.println("sort is succeed");
+	}
+}