//Quick_Sort
int Partion(int *str, int i, int j) {
int flag = str[i];
while(i < j) {
while(i < j && str[j] >= flag) {
j--;
}
if(i < j) {
str[i++] = str[j];
}
while(i < j && str[i] <= flag) {
i++;
}
if(i < j) {
str[j--] = str[i];
}
}
str[i] = flag;
return i;
}
void Quick_Sort(int *str, int low, int high) {
int pos;
if(low < high) {
pos = Partion(str, low, high);
Quick_Sort(str, low, pos - 1);
Quick_Sort(str, pos + 1, high);
}
}
//Bubble_Sort
int Bubble_Sort(int *pArray, int n) {
for(int i = 0; i < n - 1; i++) {
for(int j = i + 1; j < n; j++) {
if(pArray[i] > pArray[j]] {
swap(pArray[i], pArray[j]);
}
}
}
}
//Insert_Sort
void Insert_Sort(int array[], int length) {
int key;
for(int i = 1; i < length; i++) {
key = array[i];
for(int j = i - 1; j >= 0 && array[j] > key; j--) {
array[j + 1] = array[j];
}
array[j + 1] = key;
}
}
//Shell_Sort
void Shell_Sort(int array[], int length) {
for(int increment = length / 2; increment > 0; increment /= 2) {
int key;
for(int i = increment; i < length; i++) {
key = array[i];
for(int j = i - increment; j >= 0 && a[j] > key; j -= increment) {
array[j + increment] = array[j];
}
array[j + increment] = key;
}
}
}