Skip to content

Instantly share code, notes, and snippets.

@tamamu
Created July 30, 2016 08:06
Show Gist options
  • Save tamamu/93195651d1db564a7a52d0ef2036a63e to your computer and use it in GitHub Desktop.
Save tamamu/93195651d1db564a7a52d0ef2036a63e to your computer and use it in GitHub Desktop.
ソートアルゴリズム可視化 in Processing
float[] data = new float[800];
float bw = 0;
float bh = 0;
boolean flag = false;
void setup(){
frameRate(60);
size(800, 600);
strokeWeight(0);
fill(255,255,255);
bw = width / data.length;
bh = height;
for(int i = 0; i < data.length; i++){
data[i] = random(0,1);
}
}
void oddEvenSort(){
// odd-even sort
float t = 0;
flag = true;
for(int i=0; i<data.length-1; i+=2){
if(data[i] > data[i+1]){
t = data[i+1]; data[i+1] = data[i]; data[i] = t;
flag = false;
}
}
for(int i=1; i<data.length-1; i+=2){
if(data[i] > data[i+1]){
t = data[i+1]; data[i+1] = data[i]; data[i] = t;
flag = false;
}
}
}
void bubbleSort(){
// bubble sort
float t = 0;
for(int i=0;i<data.length-1;i++){
if(data[i] > data[i+1]){
t=data[i+1]; data[i+1] = data[i]; data[i] = t;
}
}
}
float med3(float x, float y, float z){
if(x<y){
if(y<z)return y; else if(z<x)return x; else return z;
}else{
if(z<y)return y; else if(x<z)return x; else return z;
}
}
void quickSort(float[] d, int l, int r){
if(l<r){
int i = l, j = r;
float t, pivot = med3(d[i], d[i+(j-i)/2], d[j]);
while(true){
while(d[i]<pivot)i++;
while(pivot<d[j])j--;
if(i>=j)break;
t = d[i]; d[i] = d[j]; d[j] = t;
i++; j--;
}
quickSort(d, l, i-1);
quickSort(d, j+1, r);
}
}
void update(){
//oddEvenSort();
//bubbleSort();
//quickSort(data, 0, data.length-1);
}
void draw(){
update();
background(0);
for(int i=0; i<data.length;i++){
fill(255*data[i], 1-255*data[i], 255);
rect(i*bw, bh, bw, -data[i] * bh);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment