最近看了一些算法的视频,觉得算法真是博大精深的一门课,刚看到快速排序,下面是实现:
#include <iostream>
#include <ctime>
using namespace std;
int partion(int* a, int p, int q) {
int pivot = a[p];
int i = p;
for (int j = p + 1; j <= q; j++) {
if (a[j] <= pivot) {
i++;
if (i != j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
int temp = a[i];
a[i] = a[p];
a[p] = temp;
return i;
}
int random_partion(int* a, int p, int q) {
srand((unsigned)time(0));
int ran_num=rand() % (q-p) + p;
int temp = a[ran_num];
a[ran_num] = a[p];
a[p] = temp;
return partion(a, p, q);
}
void quick_sort(int* a, int start, int end) {
if (start < end) {
int partion_index = random_partion(a, start, end);
quick_sort(a, start, partion_index-1);
quick_sort(a, partion_index+1, end);
}
}
int main() {
int a_length = 8;
int a[8] = {2, 1, 7, 8, 3, 5, 6, 4};
quick_sort(arr, 0, a_length-1);
for (int i = 0; i < a_length; i++)
cout << "a[i]=" << a[i] << endl;
}