标题:typedef struct{ int key; }DataType;
只看楼主
sh2416838058
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-3-8
结帖率:0
已结贴  问题点数:20 回复次数:1 
typedef struct{ int key; }DataType;
如何对一组完全无序的数据进行直接插入排序?要求用c语言编写
typedef struct{
    int key;
}DataType;
int Direct_Insert_sort(DataType R[],int n){
    int i,j;
    for(i=2;i<=n;++i){
        if(R[i].key<R[i-1].key){
            R[0]=R[i];
    for(j=i-1;R[0].key<R[j].key;j--){
        R[j+1]=R[j];
    }
        R[j+1]=R[0];
        }
    }
}
搜索更多相关主题的帖子: c语言 礼物 如何 
2015-03-08 15:36
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:20 
你插入排序使用数组0作为交换数据临时变量,这不和规矩,稍作修改后可对全数组进行插入排序,代码如下:

#include <stdio.h>
#include <stdlib.h>
typedef struct
{
    int key;
}DataType;
int Direct_Insert_sort(DataType R[],int n)
{
    int i,j;
    DataType t;
    for(i=1;i<n;++i)
    {
        if(R[i].key<R[i-1].key)
        {
            t=R[i];
            for(j=i-1;t.key<R[j].key&&j>=0;j--)R[j+1]=R[j];
            R[j+1]=t;
        }
    }
    return 0;
}
void main ()
{
    DataType data[10];
    int i;
    for(i=0;i<10;i++)data[i].key=rand()%100;//产生10个随机数
    for(i=0;i<10;i++)printf("%2d ",data[i].key);//显示原始的10个数
    printf("\n");
    Direct_Insert_sort(data,10);//插入排序
    for(i=0;i<10;i++)printf("%2d ",data[i].key);//显示排序后的数据
    printf("\n");
}

能编个毛线衣吗?
2015-03-08 21:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-442438-1-1.html




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

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