注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

刘邓

每天收获一点点-目标:富足

 
 
 

日志

 
 

快速排序  

2012-02-21 20:43:37|  分类: 技术类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
快速排序的思想是分而治之。把数组中间的数设置为标记middle,然后用循环比较两边的left 和 right的值和标记middle,保证left左边的数全部小于middle;右边的数right全部大于middle。这样就把数组分为了2个部分。然后对这两部分在分别递归的继续分下去,直至满足每一个小部分都满足有序。
#include<iostream>
using namespace std;
void Qsort(float *p,int left ,int right)
{
     int l,r;
     float temp,middle;
     l=left;
     r=right;
     middle=p[(l+r)/2];
     //下面的循环实现的是middle左边的比middle小
     //middle右边的比middle大 
     while(l<r)
     {
               while(p[l]<middle)l++;
               while(p[r]>middle)r--;
               if(l>=r)break;
               temp=p[l];
               p[l]=p[r];
               p[r]=temp;
               l++;
               r--;
               }
     if(left<l)Qsort(p,left,l-1);//递归实现分割后的左部有序 
     if(right>r)Qsort(p,r+1,right);//递归实现分割后的右部有序 
     return;
     }
int main()
{
    float a[]={1,23,4,5,12,6,723,672,7,34,62,23,62,34,62,34};
    int len=sizeof(a)/sizeof(int);//除与整数所占的字节数得到个数 
    for(int i=0;i<len;i++)
    cout<<a[i]<<" ";
    cout<<endl;
    Qsort(a,0,len-1);
    for(int i=0;i<len;i++)
    cout<<a[i]<<" ";
    cout<<endl;
    system("pause");
    return 0;
    }
  评论这张
 
阅读(44)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017