博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速排序
阅读量:5209 次
发布时间:2019-06-14

本文共 1009 字,大约阅读时间需要 3 分钟。

快排嘛。不久如此啦。

这个算法的平均时间复杂度可以低到O(n log n)。

原理

通过寻找到一个基准点,把所有需要排序的数,分成两类,一类小于基准数,一类大于基准数。

在寻找完毕以后,把基准点放到两类数中间。
然后对原来基准点前后两部分数,分别重复以上步骤。
这极好地体现了分治和二分的思想。

上代码

#include "stdio.h"//define a gloable arryint a[100];int QuickSort(int left , int right){    if(left > right)    {        return 1;    }    int i = left;    int j = right;    int temp = a[left];    while( i != j)    {        while(a[j] >= temp && i < j)        {            j--;        }        while(a[i] <= temp && i < j)        {            i++;        }        if (i < j)        {            int temp2 = a[i];            a[i] = a[j];            a[j] = temp2;        }    }    a[left] = a[i];    a[i] = temp;    QuickSort(left,i-1);    QuickSort(i+1,right);}int main(int argc, char const *argv[]){    for (int l = 0; l < 100; ++l)    {        a[l] = rand() % 100;        //printf("%d\n",a[l]);    }    QuickSort(0,99);    for (int l = 0; l < 100; ++l)    {        printf("%d\n",a[l]);    }    return 0;}

转载于:https://www.cnblogs.com/verain/p/4524545.html

你可能感兴趣的文章