Skip to content

Instantly share code, notes, and snippets.

View maxfunke's full-sized avatar
🦀

Baron GitGit maxfunke

🦀
View GitHub Profile
@maxfunke
maxfunke / quicksort.java
Created May 23, 2014 09:32
Recursive QuickSort Algorithm
void Quicksort(Vector<int> &v, int start, int stop) {
if(stop > start) {
int pivot = Partition(v, start, stop);
Quicksort(v, start, pivot-1);
Quicksort(v, pivot+1, stop);
}
}
@maxfunke
maxfunke / mergeSort.java
Created May 23, 2014 09:31
Recursive MergeSort Algorithm
void MergeSort(Vector<int> &v){
if (v.size() > 1) {
int n1 = v.size()/2;
int n2 = v.size() - n1;
Vector<int> left = Copy(v, 0, n1); Vector<int> right = Copy(v, n1, n2); MergeSort(left);
MergeSort(right);
Merge(v, left, right);
}
}
@maxfunke
maxfunke / subset.java
Created May 9, 2014 09:05
recursiv subset (different length, same order)
private static void recSubsets(String soFar, String rest) {
if (rest.equals("")) {
System.out.println(soFar);
} else {
recSubsets(soFar + rest.charAt(0), rest.substring(1));
recSubsets(soFar, rest.substring(1));
}
}
@maxfunke
maxfunke / permutation.java
Created May 9, 2014 09:03
recursive permutation (same length, different order)
private static void recPermute(String soFar, String rest) {
if (rest.equals( "" )) {
System.out.println( soFar );
} else {
for (int i = 0; i < rest.length(); i++) {
String next = soFar + rest.charAt(i);
String remaining = rest.substring(0, i) + rest.substring(i+1);
recPermute(next, remaining);
}
}
@maxfunke
maxfunke / backTracking.java
Created May 9, 2014 08:36
basic algorithm for back tracking (pseudo-code)
boolean solve(configuration conf) {
if (no more choices)
return (conf is goal state);
for (all available choices) {
try one choice c;
ok = solve(conf with choice c made);
if (ok)
return true;
else
unmake choice c;