Skip to content

Instantly share code, notes, and snippets.

@Whosemario
Last active March 31, 2016 15:42
Show Gist options
  • Select an option

  • Save Whosemario/79c73fe811e69d20d30edff174eac0d9 to your computer and use it in GitHub Desktop.

Select an option

Save Whosemario/79c73fe811e69d20d30edff174eac0d9 to your computer and use it in GitHub Desktop.
Bubble Sort
void BubbleSort(int* numbers, int length) {
if(numbers == NULL || length <= 1) return;
for(int i = length; i > 0; i--) {
for(int j = 0; j + 1 < length; j++) {
if(numbers[j] > numbers[j+1]) {
int tmp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = tmp;
}
}
}
}
void InsertSort(int* numbers, int length) {
if(numbers == NULL || length <= 1) return;
for(int i = 1; i < length; ++i) {
int val = numbers[i];
int j;
for(j = i-1; j >= 0; --j) {
if(val < numbers[j])
numbers[j+1] = numbers[j];
else
break;
}
numbers[j+1] = val;
}
}
void MergeSort(int* numbers, int length) {
if(numbers == NULL || length <= 1) return;
int* tempArr = new int[length];
int mid = (length - 1) / 2;
MergeSortEx(numbers, 0, mid, tempArr);
MergeSortEx(numbers, mid+1, length-1, tempArr);
Merge(number, 0, length-1, mid, tempArr);
delete [] tempArr;
}
void MergeSortEx(int* numbers, int left, int right, int* tempArr) {
if(left == right) return;
if(left + 1 == right) {
if(numbers[left] > numbers[right]) {
int tmp = numbers[left];
numbers[left] = numbers[right];
numbers[right] = tmp;
}
return;
}
int mid = (left + right) / 2;
MergeSortEx(numbers, left, mid, tempArr);
MergeSortEx(numbers, mid+1, right, tempArr);
Merge(numbers, left, right, mid, tempArr);
}
void Merge(int* numbers, int left, int right, int mid, int* tempArr) {
int i = left, j = mid + 1, k = 0;
while(i <= mid && j <= right) {
if(numbers[i] <= numbers[j]) {
tempArr[k++] = numbers[i++];
} else {
tempArr[k++] = numbers[j++];
}
}
while(i <= mid) tempArr[k++] = numbers[i++];
while(j <= right) tempArr[k++] = numbers[j++];
memcpy(numbers + left, tempArr, k * sizeof(int));
return;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment