快速排序

简介: 49 38 65 97 76 13 27——————49原始 27 38 65 97 76 13 49——————49   1次 27 38 49 97 76 13 65——————49   2次 27 38 13 97 76 49 65——————49   3次 27 38 13 49 76 97 65——————49   4次 一趟快速排序   排序1: #in

49 38 65 97 76 13 27——————49原始

27 38 65 97 76 13 49——————49   1

27 38 49 97 76 13 65——————49   2

27 38 13 97 76 49 65——————49   3

27 38 13 49 76 97 65——————49   4

一趟快速排序

 

排序1:

#include <iostream> #include <time.h> #define ARYSIZE 100000 using namespace std; void QuickSort(int ary[], int nBegin, int nEnd) { int tKey = ary[nBegin]; int tLeft = nBegin; int tRight = nEnd;//以第一个数为参照做比较 if(tLeft >= tRight) { return; } while(tLeft < tRight) { while(tLeft < tRight && ary[tRight] >= tKey) { tRight--; } ary[tLeft] = ary[tRight]; while(tLeft < tRight && ary[tLeft] <= tKey) { tLeft++; } ary[tRight] = ary[tLeft]; } ary[tRight] = tKey; QuickSort(ary, nBegin, tRight-1); QuickSort(ary, tRight+1, nEnd);//递归 } int main(int argc, char *argv[]) { int ary[ARYSIZE] = {0}; srand((unsigned int)time(NULL)); for (int i = 0; i < ARYSIZE; ++i) { ary[i] = rand() % 100; } QuickSort(ary, 0, ARYSIZE - 1); getchar(); }

排序1比较块;

 

排序2:

#include <iostream> #include <time.h> #define ARYSIZE 100000 using namespace std; void swap(int *a, int *b) { int t=*a; *a=*b; *b=t; } void QuickSort(int arr[], int beg, int end) { if (end >= beg + 1) { int piv = arr[beg], k = beg + 1, r = end; while (k < r) { if (arr[k] < piv) { k++; } else { swap(&arr[k], &arr[r--]); } } if (arr[k] < piv) { swap(&arr[k],&arr[beg]); QuickSort(arr, beg, k); QuickSort(arr, r, end); } else { if (end - beg == 1) { return; } swap(&arr[--k],&arr[beg]); QuickSort(arr, beg, k); QuickSort(arr, r, end); } } } int main(int argc, char *argv[]) { int ary[ARYSIZE] = {0}; srand((unsigned int)time(NULL)); for (int i = 0; i < ARYSIZE; ++i) { ary[i] = rand() % 100; } QuickSort(ary, 0, ARYSIZE - 1); getchar(); }

相关文章
|
6月前
快速排序(超超详细,因为自己也不是很会)
快速排序(超超详细,因为自己也不是很会)
|
29天前
|
搜索推荐 C++
C++快速排序的实现
C++快速排序的实现
|
4月前
|
C++
C++快速排序
C++快速排序
38 1
|
7月前
快速排序
快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
24 0
|
8月前
|
算法 搜索推荐 测试技术
快速排序详解
快速排序详解
45 0
|
9月前
|
人工智能 搜索推荐
【快速排序】
【快速排序】
|
10月前
重新理解快速排序
重新理解快速排序
39 0
|
11月前
|
机器学习/深度学习
785. 快速排序
785. 快速排序
43 0
【1. 快速排序】
思路: > 1. 确定分界点:q[l] , q[(1 + r)/2] , q[r] , 随机 > 2. 调整区间的范围:使得在`分界点左侧是数都<= x`, `分界点右侧的数都>= x `(`重点处理`)
63 0
【1. 快速排序】