快速排序 C++

来源:互联网 发布:怎么成为数据库管理员 编辑:程序博客网 时间:2024/06/05 02:30
#include<iostream>#include<algorithm>using namespace std;void quicksort(int a[], int begin, int end) {//升序    if (begin < end) {        int i = begin, j = end, x = a[begin]; //x随机数,这里设为第一个数        while (i < j) {          while (i<j&&a[j]>x) j--;  //从右往左寻找小于或者等于x的第一个数          if (i < j) a[i++] = a[j]; //找到后填到i对应的位置,并i++即i右移          while (i < j&&a[i] <= x) i++;   //从左往右寻找大于x的第一个数          if (i < j) a[j--] = a[i];    //找到后填到填到上一步j对应的位置,并j--即j左移        }        x = a[i];        quicksort(a, begin, i - 1);  //分治法,利用递归,处理i左边的区间和i右边的区间        quicksort(a, i+ 1, end);    }}int main() {    int arr[] = { 34,65,12,43,67,5,78,10,3,70 };    int len = sizeof(arr) / sizeof(int);    for (int i = 0; i < len; i++) {        cout << arr[i] << ' ';    }    cout << endl;    quicksort(arr, 0, len - 1);    for (int i = 0; i < len; i++) {        cout << arr[i]<<' ';    }    cout << endl;    system("pause");    return 0;}
原创粉丝点击