• 快速排序


    在实际中最常用的一种排序算法,速度快,效率高。

    快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。

     1 void quicksort(int left,int right) 
     2 { 
     3     int i,j,t,temp; 
     4     if(left>right) 
     5        return; 
     6                                 
     7     temp=a[left]; //temp中存的就是基准数 
     8     i=left; 
     9     j=right; 
    10     while(i!=j) 
    11     { 
    12                    //顺序很重要,要先从右边开始找 
    13                    while(a[j]>=temp && i<j) 
    14                             j--; 
    15                    //再找右边的 
    16                    while(a[i]<=temp && i<j) 
    17                             i++; 
    18                    //交换两个数在数组中的位置 
    19                    if(i<j) 
    20                    { 
    21                             t=a[i]; 
    22                             a[i]=a[j]; 
    23                             a[j]=t; 
    24                    } 
    25     } 
    26     //最终将基准数归位 
    27     a[left]=a[i]; 
    28     a[i]=temp; 
    29                              
    30     quicksort(left,i-1);//继续处理左边的,这里是一个递归的过程 
    31     quicksort(i+1,right);//继续处理右边的 ,这里是一个递归的过程 
    32 } 
  • 相关阅读:
    LINQ To SQL: Eager Loading
    返回JSon格式数据
    Tips
    Easyui的DateBox日期格式化
    jquery treeview 展开指定节点,选中指定节点
    jquery treeview 功能参数
    Javascript 中 ShowModalDialog 的使用方法
    GetDlgItem用法
    20个开源项目托管站点推荐
    DLINQ(十): 分层构架的例子
  • 原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/6502579.html
Copyright © 2020-2023  润新知