| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 359 人关注过本帖
标题:能否解答
只看楼主 加入收藏
佳0211
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-3-22
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
能否解答
鲨鱼排序(冒泡排序的改进):在冒泡排序中,一趟能够让最大的元素(石头)沉底,而小的元素会逐步上浮,但上浮的速度比较慢。鲨鱼排序一趟中,既能让最大的元素沉底,也能让最小的元素浮到最上面。其算法描述为:在第1趟中,从A[1]开始每个元素与后面的元素进行比较,将大的放到后面,直到A[n],则最大的元素必到A[n]里了,然后倒过来,从A[n-1]开始向前比较,将小的元素往前移,直到A[1],则最小的元素必在A[1]了——这样,在一趟中,既找到了最大的元素,也找到了最小的元素。在第2趟中,从A[2]开始到A[n-1]进行比较,能让最大的元素到A[n-1]中,又从A[n-2]开始到A[2]进行比较,能让最小的元素到A[2]中……如此这般,像鲨鱼一样来回进行,经过n/2趟排序,原序列就能变为有序的序列了。试编写算法实现之。
搜索更多相关主题的帖子: 最大的 元素 鲨鱼 
2015-03-22 20:12
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:10 
看看
2015-03-22 20:25
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:10 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SWAP(a, b, t) ((t) = (a), (a) = (b), (b) = (t))
#define CMP(a, b) (((a) < (b)) ? -1 : ((a) == (b)) ? 0 : 1)
#define N 10

void sort(int *a, int n) {
    int i = 1, left = 0, right = n - 1, l, r, j, t;

    while(left < right) {
        l = left + 1;
        r = right - 1;

        for(j = left; j < right; j++) {
            if(CMP(a[j], a[j + 1]) > 0) {
                SWAP(a[j], a[j + 1], t);
                r = j;
            }
        }

        right = r;

        for(j = right; j > left; j--) {
            if(CMP(a[j], a[j - 1]) < 0) {
                SWAP(a[j], a[j - 1], t);
                l = j;
            }
        }

        left = l;

        printf("\n第%d次排序:\n", i++);
        printf("left = %d\tright = %d\n", left, right);

        for(j = 0; j < n; j++) 
            printf("%d ", a[j]);

        puts("");
    }
}

int main(void) {
    int i, a[N];
    srand((unsigned int)time(NULL));

    for(i = 0; i < N; i++)
        a[i] = 1 + (int)(10.0 * rand() / (RAND_MAX + 1.0));

    puts("原始数据(N = 10):");

    for(i = 0; i < N; i++)
        printf("%d ", a[i]);

    puts("");
    sort(a, sizeof(a) / sizeof(a[0]));
    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-03-22 23:24
快速回复:能否解答
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036575 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved