入门之快速排序

Posted Jeson

tags:

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

 1 /*
 2 入门之快速排序
 3 时间复杂度:O(nlogn)
 4 最坏情况时时间复杂度能达到O(n^2)
 5 借鉴自算法导论
 6 */
 7 #include<iostream>
 8 using namespace std;
 9 int a[] = {3,7,8,5,4,6,2,1,3};
10 void quick_sort(int*,int,int);
11 void swap(int,int);
12 void print();
13 int main()
14 {
15     print();//排序前
16     quick_sort(a,0,8);
17     print();//排序后
18 }
19 void print()
20 {
21     for(int i=0; a[i]!=0; ++i)
22         cout << a[i] << " ";
23     cout << endl;
24 }
25 void swap(int x,int y)
26 {
27     int t = a[x];
28     a[x] = a[y];
29     a[y] = t;
30 }
31 void quick_sort(int a[],int l,int r)//将 <t 和 >=t 的分开
32 {
33     if(l >= r)
34         return ;
35     int t = a[r],j = l-1;//边界问题
36     for(int i=l; i<r; ++i)
37         if(a[i] < t)
38         {
39             ++j;
40             if(i != j)
41                 swap(i,j);
42         }
43     swap(j+1,r);
44     quick_sort(a,l,j);
45     quick_sort(a,j+2,r);
46 }

 

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

入门之快速排序

php之快速入门学习-11(数组排序)

C语言编程入门笔记基础学习排序算法之快速排序,轻松掌握快排!

交换排序之冒泡排序和快速排序

Pandas高级数据分析快速入门之数据筛选——分组排序筛选实践笔记

Java小白入门200例66之快速排序