菜鸟学习数据结构算法之路之快速排序

来源:互联网 发布:矩阵优化 编辑:程序博客网 时间:2024/06/14 00:48

依旧继续数据结构与算法道路,唉,发现这条路越来越难走了,不过也得咬牙坚持下去,程序就是代码加算法组合而成的,想要当好一个程序猿,算法这条路是必不可少的啊,加油吧,我也不知道能不能坚持下去写这些东西。

快速排序是由冒泡排序为基础上改进的一种排序方法,所以优先了解冒泡排序应该上手的会比较快,也是非常常见的一种排序方法,思路其实也很简单,把数组的第一个元素作为key,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,理论就是这样,下面上代码~~

#include<iostream>using namespace std;//递归快速排序void quick_sort(int a[], int begin, int end){    if (begin >= end){              return;    }    int left = begin, right = end;    int value = a[left];                            //把第一个元素作为参数来比较    while (left < right){        if (a[left + 1 ] < value){                  //判断第二个元素是否小于,如果是数值替换            a[left] = a[left + 1];            left++;        }        else{            swap(a[left + 1], a[right]);            //替换函数替换数值            right--;        }    }    a[left] = value;                                //赋值给中间的数覆盖为第一个元素    quick_sort(a, begin, left - 1);                 //在中间值的前面的数进行递归再排    quick_sort(a, left + 1, end);                   //在中间值得后面的数进行递归再排}int main(void){    int arr[] = { 3, 4, 2, 1, 7, 5, 8, 9, 0, 6 };    quick_sort(arr, 0, 9);    for (int i = 0; i < 10; i++){        cout << arr[i] << endl;    }    system("pause");    return 0;}