依旧继续数据结构与算法道路,唉,发现这条路越来越难走了,不过也得咬牙坚持下去,程序就是代码加算法组合而成的,想要当好一个程序猿,算法这条路是必不可少的啊,加油吧,我也不知道能不能坚持下去写这些东西。
快速排序是由冒泡排序为基础上改进的一种排序方法,所以优先了解冒泡排序应该上手的会比较快,也是非常常见的一种排序方法,思路其实也很简单,把数组的第一个元素作为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;
}