快速排序算法分析

来源:互联网 发布:电视直播网站php源码 编辑:程序博客网 时间:2024/06/06 08:33

// 快速排序算法#include <stdio.h>#include <stdlib.h>void quicksort(int *arr, int nLeft, int nRight){    int i =0, j = 0;    if (nLeft >= nRight)    {        return;    }         i = nLeft;    j = nRight;    int nMid = (nLeft + nRight) / 2;    int nMidVal = arr[nMid];    while (i < j)    {       // From left move to right        while ((arr[i] < nMidVal) && (i < j))        {            i++;        }       // From right move to left        while ((arr[j] > nMidVal) && (i < j))        {            j--;        }                    if (i < j)        {            arr[i] = arr[i]^arr[j];            arr[j] = arr[i]^arr[j];            arr[i] = arr[i]^arr[j];        }    }    nMid = j;    quicksort(arr, nLeft, nMid);    quicksort(arr, nMid+1, nRight);}int main(){    int arrTest[]={2,5,7,4,1,3,9,0,8,6};    int i = 0;    char c;    for (i = 0; i < 10; i++)    {        printf("%d ", arrTest[i]);    }    printf("\n\n");    quicksort(arrTest, 0, 9);    for (i = 0; i < 10; i++)    {        printf("%d ", arrTest[i]);    }    printf("\n\n");    scanf("%c", c);    return 0;}


算法分析:

时间复杂度
最好情况(每次总是选到中间值作枢轴)T(n)=O(nlogn)
最坏情况(每次总是选到最小或最大元素作枢轴)
                  做n-1趟,每趟比较n-i次,总的比较次数最大:[O(n2)] 退化为冒泡排序
                  平均时间复杂度为::T(n)=O(nlogn)














原创粉丝点击