zoukankan      html  css  js  c++  java
  • 快速排序2

    算法:

    1、从数列中挑出一个元素,称为 "基准"(pivot),

    2、重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。

    3、递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

    07.void QuickSort(int *arr, int left, int right)  
    08.{  
    09.  int i,j;  
    10.  if(left<right)  
    11.  {  
    12.    i=left;j=right;  
    13.    arr[0]=arr[i]; //准备以本次最左边的元素值为标准进行划分,先保存其值  
    14.    do  
    15.    {  
    16.      while(arr[j]>arr[0] && i<j)   
    17.        j--;        //从右向左找第1个小于标准值的位置j  
    18.      if(i<j)                               //找到了,位置为j  
    19.      {   
    20.        arr[i] = arr[j];  
    21.        i++;  
    22.      }           //将第j个元素置于左端并重置i  
    23.      while(arr[i]<arr[0] && i<j)  
    24.        i++;      //从左向右找第1个大于标准值的位置i  
    25.      if(i<j)                       //找到了,位置为i  
    26.      {   
    27.        arr[j] = arr[i];  
    28.        j--;  
    29.      }           //将第i个元素置于右端并重置j  
    30.    }while(i!=j);  
    31.    arr[i] = arr[0];         //将标准值放入它的最终位置,本次划分结束  
    32.    quicksort(arr, left, i-1);     //对标准值左半部递归调用本函数  
    33.    quicksort(arr, i+1, right);    //对标准值右半部递归调用本函数  
    34.  }  
    35.}  
  • 相关阅读:
    网页基本信息
    3.ThinkPHP入门---视图
    2.TinkPHP入门----控制器
    1.Thinkphp入门--框架介绍
    C#生成二维码
    .net mvc中的表单异步提交
    .net MVC中异常日志
    .net导入excel数据到数据库中
    执行带返回参数的存储过程
    Jquery客户端校验——jquery.validate.js
  • 原文地址:https://www.cnblogs.com/yl-saber/p/6933534.html
Copyright © 2011-2022 走看看