C++实现快速排序

Posted 回看欧洲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++实现快速排序相关的知识,希望对你有一定的参考价值。

 1 //============================================================================
 2 // Name        : C++Basic.cpp
 3 // Author      : Laughing
 4 // Version     :
 5 // Copyright   : All Right Reserved
 6 // Description : 快速排序:采用分治法
 7 //============================================================================
 8 
 9 #include <iostream>
10 #include <stdlib.h>
11 #include <time.h>
12 using namespace std;
13 /**
14  *快速排序:采用分治法
15  */
16 int partition(int array[], int start, int end) { //返回基准的下标
17     if (array == NULL) {
18         cout << "数组为空" << endl;
19         throw new exception();
20     }
21     int base = rand() % (end - start + 1); //若基准为随机元素,则递归次数不定,即时间复杂度有差别!★
22 //    int base = 0;//若基准为数组第一个元素或某个固定元素,则递归次数固定。
23     cout << "基准为:" << base << endl;
24     int basic = array[base];//basic为基准
25     while (start < end) {
26         while (start < end && array[end] > basic) {
27             end--;
28         }
29         if (start < end) { //
30             array[base] = array[end];
31             base = end; //改变基准指向的下标
32         }
33         while (start < end && array[start] < basic) {
34             start++;
35         }
36         if (start < end) { //
37             array[base] = array[start];
38             base = start; //改变基准指向的下标
39         }
40     }
41     array[base] = basic;
42     return base;
43 }
44 void QuickSort(int array[], int start, int end) {
45     if (start < end) {
46         int base = partition(array, start, end);
47         QuickSort(array, 0, base - 1);
48         QuickSort(array, base + 1, end);
49     }
50 }
51 int main() {
52 //    srand((int)time(0));//初始化随机种子:若不初始化,每次递归的随机种子不会变化,递归次数固定。
53     int array[] = { 4, 3, 2, 1, 9, 7, 5, 8, 6 };
54     int size = sizeof(array) / sizeof(*array); //求数组长度
55     QuickSort(array, 0, size - 1);
56     for (int i = 0; i < size; i++) {
57         cout << array[i] << endl;
58     }
59     return 0;
60 }

 

以上是关于C++实现快速排序的主要内容,如果未能解决你的问题,请参考以下文章

C++ 快速排序算法

C++实现各种交换排序(冒泡,快速)

排序算法——快速排序的图解代码实现以及时间复杂度分析

快速排序-递归实现

快速排序实现 - Python

在最佳情况下,由于堆栈溢出错误,快速排序算法失败 - C++