大家好!今天给大家讲的是快速排序
解释:
快速排序(Quicksort)是对冒泡排序的一种改进。
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列
以上就是官方的解释,就小编的理解是我们找一个数字当作参照物,然后讲数据比这个参照物小的放在序列的左边,大的放右边
代码原图于下:
#include<iostream>
using namespace std;
void print(int a[], int n) {
for (int j = 0; j < n; j++) {
cout << a[j] << " ";
}
cout << endl;
return;
}
void swap(int* a, int* b) {
int tmp = *a;
*a = *b;
*b = tmp;
return;
}
int partition(int a[], int low, int high) {
//基准元素
int k = a[low];
//从表的两端交替地向中间扫描
while (low < high) {
//从high 所指位置向前搜索,至多到low+1 位置。将比基准元素小的交换到低端
while (low < high && a[high] > k)
--high;
while (a[low] < k)
++low;
swap(&a[low], &a[high]);
}
a[low] = a[high];
a[high] = k;
print(a, 10);
return low;
}
void quickSort(int a[], int low, int high) {
if (low < high) {
//将表一分为二
int privotLoc = partition(a, low, high);
//递归对低子表递归排序
quickSort(a, low, privotLoc - 1);
//递归对高子表递归排序
quickSort(a, privotLoc + 1, high);
}
return;
}
int main() {
int a[10] = { 3,1,5,7,2,4,9,6,10,8 };
cout << "初始值:";
print(a, 10);
quickSort(a, 0, 9);
cout << "结果:";
print(a, 10);
return 0;
}