快速排序另一种实现

来源:互联网 发布:遗传算法的基本步骤 编辑:程序博客网 时间:2024/05/01 15:55
#include <iostream>using namespace std;void print_r(int *a, int length){for (int i = 0; i < length; ++i)cout << a[i] << ' ';cout << endl;}void q_sort(int *a, int length){if (length == 1) {return ;}if (length == 2) {if (a[0] > a[1])swap(a[0], a[1]);return ;}int *divide = a + length - 1;int *less = a;int *greater = a + length - 2;while (less < a + length && greater >= a) {if (less < greater && *less <= *divide) {++less;} else if (greater > less && *greater > *divide) {--greater;} else {swap(*less, *greater);}if (less == greater) {if (*less <= *divide) {swap(*(less + 1), *divide);} else {swap(*less, *divide);}break;}}q_sort(a, less - a + 1);q_sort(less + 1, length - (less - a) - 1); }int main(){int a[13] = {1, 3, 2, 0, 4, 6, 8, 7, 9, 5, 13, 10, 9};q_sort(a, 13);print_r(a, 13);}

原创粉丝点击