已知有7个待排序的元素,它们的关键字序列为(47, 56, 29, 16, 92, 33, 20),编写一个程序,用如下方法对其进行升序排序,要求显示每趟排序的结果:直接插入排序;希尔排序;冒泡排序

已知有7个待排序的元素,它们的关键字序列为(47, 56, 29, 16, 92, 33, 20),编写一个程序,用如下方法对其进行升序排序,要求显示每趟排序的结果:直接插入排序;希尔排序;冒泡排序,第1张

已知有7个待排序的元素,它们的关键字序列为(47, 56, 29, 16, 92, 33, 20),编写一个程序,用如下方法对其进行升序排序,要求显示每趟排序的结果:直接插入排序;希尔排序;冒泡排序

#include
#include
#include
const int MAXSIZE=100;
typedef int KeyType;
typedef int ElemType;
typedef struct
{    KeyType key;
    ElemType data;
}SqType;

void InsertSort(SqType R[],int n)
{    int i,j;
    SqType tmp;
    for(i=1;i     {
        if(R[i-1].key>R[i].key)
        {    tmp=R[i];
            j=i-1;
            do
            {    R[j+1]=R[j];
                j--;
            }while(j>=0 && R[j].key>tmp.key);
            R[j+1]=tmp;
        }
         printf("i=%d",i); for(int i=0; i<7; i++)printf("%3d",R[i].key);printf("n");     
        
    }
}

void ShellSort(SqType R[],int n)
{    int i,j,d;
    SqType tmp;
    d=n/2;
    while(d>0)
    {    for(i=d;i         {    tmp=R[i];
            j=i-d;
            while(j>=0 && tmp.key             {    R[j+d]=R[j];
                j=j-d;
            }
            R[j+d]=tmp;
        }
    printf("i=%d",d); for(int i=0; i<7; i++)printf("%3d",R[i].key);printf("n");    d=d/2; 
    }
}

void BubbleSort(SqType R[],int n)
{    int i,j,exchang;
    SqType tmp;
    for(i=0;i     {    
        exchang=0;
        for(j=n-1;j>i;j--)
            if(R[j].key             {    tmp=R[j];
                R[j]=R[j-1];
                R[j-1]=tmp;
                exchang=1;
            }
            printf("i=%d",i); for(int x=0; x<7; x++)printf("%3d",R[x].key);printf("n");    
            if(exchang==0)
                 return;
    }
}

void main()
{    SqType R[MAXSIZE];
    int a[]={47,56,29,16,92,33,20},i;
    printf("初始序列:");
    for(i=0; i<7; i++)
    {    
        R[i].key=a[i];printf("  %d  ",R[i].key);
        }
    printf("n直接插入排序:n");
    InsertSort(R,7);
    printf("初始序列:");
    for(i=0; i<7; i++)
    {    
        R[i].key=a[i];printf("  %d  ",R[i].key);
        }    
    printf("n希尔排序:n");
    ShellSort(R,7);
    printf("初始序列:");
    for(i=0; i<7; i++)
    {
        R[i].key=a[i];printf("  %d  ",R[i].key);
        }
    printf("n冒泡排序:n");
    BubbleSort(R,7);
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5634599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存