前言
提示:仅为个人学习使用,如有错误可以指正:
提示:以下是本篇文章正文内容。
一、快速排序基本思想
选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小。然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以达到全部数据变成有序。
二、基本步骤及代码展示
1.三步走
1.确认一个pivot 小(左)大(右)
2.左—>快
3.右—>快:
2.例子
- 例:{5.4.7.2.9.1.77}
pivot=5
4.2.1. 5. 7.9.77
{5. 4. 7. 2. 9. 1. 77}
left=5(大)—>右 左<—(小)right=77
(left<right)
77>5 right–
1<5 a[left]=a[right]
…
3.示例代码
代码如下(示例):
void Quick_Sort(int *arr, int begin, int end){
if(begin > end)
return;
int tmp = arr[begin];
int i = begin;
int j = end;
while(i != j){
while(arr[j] >= tmp && j > i)
j--;
while(arr[i] <= tmp && j > i)
i++;
if(j > i){
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
arr[begin] = arr[i];
arr[i] = tmp;
Quick_Sort(arr, begin, i-1);
Quick_Sort(arr, i+1, end);
}
时间复杂度为O(nlog2n)。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了快速排序的基础,仅作为学习使用,有问题可以私聊博主