| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1652 人关注过本帖
标题:希尔排序,想将排好的元素输出,但是数组传递有问题
取消只看楼主 加入收藏
Vsnow
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:124
专家分:145
注 册:2015-1-3
结帖率:95%
收藏
已结贴  问题点数:40 回复次数:0 
希尔排序,想将排好的元素输出,但是数组传递有问题
#include<iostream>
using namespace std;
#include <stdlib.h>
#include <iostream>
typedef int KeyType;
typedef char InfoType[10];
typedef struct
{   
    KeyType key;               
    InfoType data;              
} RecType;


/* 希尔排序 */
void shell(RecType R[],int n,int &moves,int &comtimes)
{
    int i,j,gap;
    RecType tmp;
    gap=n/2;    /* 增量置初值 */
    while(gap>0)
    {
        for(i=gap;i<n;i++)    /* 对所有相隔gap位置的元素组采用直接插入排序 */
        {
            tmp=R[i];
            moves++;/* 移动次数加一 */
            j=i-gap;
            while(j>=0 && tmp.key<R[j].key)/* 对相隔gap位置的元素组进行排序 */
            {
                R[j+gap]=R[j];
                j=i-gap;        
            }
            moves++;/* 移动次数加一 */
            comtimes++;/* 比较次数加一 */
            R[j+gap]=tmp;
            moves++;/* 移动次数加一 */
   
        }
        gap=gap/2;/* 减小增量 */
    }
/*    cout<<"从小到大排序:";
    for(int k=0;k<n;k++)
    {   
        cout<<R[k].key<<"   ";
    }*/
    cout<<"\n";
    cout<<"运用希尔排序所需比较次数为:"<<comtimes<<endl;
    cout<<"运用希尔排序所需移动次数为:"<<moves<<endl;
}

void main()
{   
    int a[5]={52,13,38,56,1,2};
    RecType b[10];
    for(int i=0;i<5;i++)
    {
        b[i].key=a[i];
    }
    int moves=0,comtimes=0;
    shell(b,5,moves,comtimes);
}
搜索更多相关主题的帖子: include 元素 
2015-12-27 13:26
快速回复:希尔排序,想将排好的元素输出,但是数组传递有问题
数据加载中...
 
   



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

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