• 快速排序算法实现


    快速排序算法是比较常用的一种排序算法,在所有同数量级(O(nlogn))的排序算法中,其平均性能最好。但是,若初始记录序列按关键字有序或基本有序时,快速排序将蜕化为气泡排序,其时间复杂度为O(n^2),可以通过改良该算法来完善这一问题。

    快速排序算法的一般实现:

     1 #include <stdio.h>
     2 
     3 #define LEN 7
     4 
     5 int array[LEN] = {49, 38, 65, 97, 76, 13, 27};
     6 
     7 void printarray()
     8 {
     9     int i;
    10 
    11     for (i = 0; i < LEN; i++)
    12     {
    13         printf("%d ", array[i]);
    14     }
    15     printf("
    ");
    16 
    17     return;
    18 }
    19 
    20 int partition(int start, int end)
    21 {
    22     int pivotkey = array[start];
    23 
    24     while (start < end)
    25     {
    26         while (start < end && array[end] >= pivotkey)
    27             end--;
    28         array[start] = array[end];
    29         while (start < end && array[start] <= pivotkey)
    30             start++;
    31         array[end] = array[start];
    32     }
    33     array[start] = pivotkey;
    34 
    35     return start;
    36 }
    37 
    38 void quicksort(int start, int end)
    39 {
    40     int mid;
    41 
    42     if (start < end)
    43     {
    44         mid = partition(start, end);
    45         printarray();
    46         quicksort(start, mid - 1);
    47         quicksort(mid + 1, end);
    48     }
    49 
    50     return;
    51 }
    52 
    53 
    54 int main(void)
    55 {
    56     printarray();
    57     quicksort(0, LEN - 1);
    58 
    59     return 0;
    60 }
  • 相关阅读:
    用小百合学python
    驱动对象 设备对象 设备栈 乱杂谈
    [转]很经典的http协议详解
    利用VMWare和WinDbg调试驱动程序
    GCC基础
    史上最著名的10个思想实验 (转)
    windows XP下驱动开发环境设置(DDK+VC6.0)
    守护进程
    驱动SYS开发总结
    ASP.NET学习笔记1
  • 原文地址:https://www.cnblogs.com/laihaiteng/p/3578415.html
Copyright © 2020-2023  润新知