| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 444 人关注过本帖
标题:查找的元素
只看楼主 加入收藏
无力的猛兽
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-5-19
结帖率:0
收藏
 问题点数:0 回复次数:4 
查找的元素
二、从键盘接收一个不超过20个数据元素的待排序表。
1、输出待排序表。
2、对待排序表进行希尔排序,要求输出每趟排序的结果。
3、对原待排序表进行快速排序,要求输出每趟排序的结果。。

搜索更多相关主题的帖子: 键盘 元素 
2011-05-19 16:18
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
发个程序:
程序代码:
#include <stdio.h>

#define WAY
//#undef WAY
#define SIZE 20//表的最大长度
typedef int TYPE;//表中元素的类型
unsigned int length;//表的实际长度

TYPE table[SIZE];

//录取信息
void get_input(void)
{
    while (scanf("%d", &table[length]))
    {
        length++;
    }
}
//打印表
void print_table(void)
{
    unsigned int index=0;

    while (index != length)
    {
        printf("%d ", table[index]);
        ++index;
    }
    printf("\n");
}

#ifdef WAY
//调整
void adjust(unsigned int gap)
{
    unsigned int index = 0;
    unsigned int i = gap;
    TYPE temp;

    for(; index < length; index++)
    {
        temp = table[index];
        for (i=index+gap; i < length; i++)
        {
            if (temp <= table[i])
            {
                temp += table[i];
                table[i] = temp - table[i];
                temp -= table[i];
            }
            i += gap;
        }
        table[index] = temp;
    }
}
//希尔排序
void sort(unsigned int time)
{//升序排列
    unsigned int gap = 2*(time-1)+1;
    unsigned int counter = 0;

    while (counter++ != time)
    {
        adjust(gap);

        if (gap != 1)
        {
            gap = gap-2;
        }
        printf("第%d次排序结果: ", counter);
        print_table();
    }
}
#else
unsigned int adjust(unsigned int low, unsigned int high)
{//升序排列
    TYPE temp = table[low];

    while (low < high)
    {
        while (low < high && temp <= table[high])
        {
            --high;
        }
        table[low] = table[high];
        while (low < high && temp >= table[low])
        {
            ++low;
        }
        table[high] = table[low];
    }
    table[low] = temp;

    return low;
}
//快速排序
void sort(unsigned int low, unsigned int high)
{
    unsigned int i;
    static unsigned int counter=1;
    if (low < high)
    {
        i = adjust(low, high);
        printf("第%d次排序结果: ", counter++);
        print_table();
        sort(low, i-1);
        sort(i+1, high);
    }
}
#endif

void function(void)
{
    get_input();
    print_table();
#ifdef WAY
    printf("\t希尔排序\n");
    sort(4);
#else
    printf("\t快速排序\n");
    sort(0, length-1);
#endif
    print_table();
}

int main(void)
{
    function();

    return 0;
}

 
2011-05-19 21:50
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


图片附件: 游客没有浏览图片的权限,请 登录注册

2011-05-19 21:52
renkang任康
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-5-5
收藏
得分:0 
回复 3楼 寒风中的细雨
冒昧的问一句 :用的什么编译器!!!
2011-05-25 23:25
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
回复 4楼 renkang任康
VC++6.0   其他的也有用   
2011-05-30 21:11
快速回复:查找的元素
数据加载中...
 
   



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

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