首页 > 其他 > 详细

数据结构复习之排序

时间:2014-03-21 05:11:09      阅读:269      评论:0      收藏:0      [点我收藏+]

堆排序

bubuko.com,布布扣
void heapjust(int x,int len)//大顶堆
{
    int i,num;
    num = p[x];
    for(i = 2*x;i <= len;i *= 2)
    {
        if(i+1 <= len&&p[i] < p[i+1]) i ++;
        if(num > p[i]) break;
        p[x] = p[i];
        x = i;
    }
    p[x] = num;
}
void heapbuild()
{
    int i,t;
    for(i = n/2;i >= 1;i --)
    {
        heapjust(i,n);
    }
    for(i = n;i >= 1;i --)
    {
        t = p[1];
        p[1] = p[i];
        p[i] = t;
        heapjust(1,i-1);
    }
}
bubuko.com,布布扣

快排

bubuko.com,布布扣
 1 void qsort(int l,int r)
 2 {
 3     int x = l,y = r,key = p[l];
 4     if(x >= y) return;
 5     while(x < y)
 6     {
 7         while(x < y&&p[y] >= key)y--;
 8         p[x] = p[y];
 9         while(x < y&&p[x] <= key)x++;
10         p[y] = p[x];
11     }
12     p[x] = key;
13     qsort(l,x-1);
14     qsort(x+1,r);
15 }
bubuko.com,布布扣

归并

bubuko.com,布布扣
 1 int p[100001],o[100001];
 2 void merge(int L,int R)
 3 {
 4     int m,i,j,k;
 5     m = (L + R) >> 1;
 6     if(L >= R) return ;
 7     merge(L,m);
 8     merge(m+1,R);
 9     for(i = L,j = m+1,k = L; k <= R; k ++)
10     {
11         if(j == R+1)
12             o[k] = p[i++];
13         else if(i == m+1)
14             o[k] = p[j++];
15         else if(p[i] > p[j])
16             o[k] = p[i++];
17         else
18             o[k] = p[j++];
19     }
20     for(i = L; i <= R; i ++)
21         p[i] = o[i];
22 }
bubuko.com,布布扣

数据结构复习之排序,布布扣,bubuko.com

数据结构复习之排序

原文:http://www.cnblogs.com/local8080/p/3614524.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!