• Quick Sort -- 快速排序算法


     1 //参数说明:
     2 //      int data[] : 待排序的数据数组
     3 //      int m      : 下限值
     4 //      int n      : 上限值
     5 void QuickSort ( int data[] , int m , int n)
     6 {
     7     int i , j , x;
     8 
     9     i = m;
    10     j = n;
    11     x = data[i];      //取数组的第一个数作为基准值
    12 
    13     while ( i < j )
    14     {
    15         while( ( i < j ) && ( x < data[j] ) )
    16         {
    17             j--;
    18         }
    19         if ( i < j ) 
    20         {
    21             data[i] = data[j];
    22             i++;       
    23         }
    24         else
    25             break;
    26 
    27        while( ( i < j ) && ( x > data[i] ) )
    28         {
    29             i++;
    30         }
    31         if ( i < j ) 
    32         {
    33             data[j] = data[i];
    34             j--;
    35         }
    36         else
    37             break;
    38     }  
    39     
    40     data[i] = x;       //循环结束后,基准值的位置已经确定
    41     //对基准值两边的子数列进行递归操作,最终完成排序
    42     QuickSort ( data , m , i - 1 );
    43     QuickSort ( data , i + 1 , n);  
    44 }    

    快速排序算法采用分治法的策略,首先在数列中随便选出一个数作为基准,将所有比基准小的数放在基准的前面,所有比基准大的数放在基准的后面,一趟走完之后,基准的位置已经完全确认了,数据被分成了两部分,在将这两部分递归进行上面的操作,即完成了快速排序的实现。

  • 相关阅读:
    HEC-ResSim原文档
    水文模型大全
    用word发布博客到博客园
    给你的浏览器标题栏加上小图标
    系统性能调优必知必会学习
    系统性能调优必知必会学习
    容器化学习
    Redisson学习
    mysql回顾
    事物、源码学习,spring-tx
  • 原文地址:https://www.cnblogs.com/fengshen19951029/p/8568038.html
Copyright © 2020-2023  润新知