| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 652 人关注过本帖, 1 人收藏
标题:数据结构练习1~插入排序~
取消只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
结帖率:99.25%
收藏(1)
已结贴  问题点数:5 回复次数:1 
数据结构练习1~插入排序~
关于插入排序~那资料就只有代码~还是先看看吧~
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#define MAX 255

int R[MAX]={0};

void Insert_Sort(int n);

int main()
{
    int i=0;
    int n=0;
    /*clrscr();*/
    system("cls");

    puts("Please input total element number of the sequence:");
    scanf("%d",&n);

    if (n<=0||n>MAX)
    {
        printf("n must more than 0 and less than %d.\n",MAX);
        exit(0);
    }

    puts("Please input the elements one bye one:");

    for (i=1;i<=n;++i)
        scanf("%d",&R[i]);

    puts("The sequence you input is:");

    for (i=1;i<=n;++i)
        printf("%4d",R[i]);

    Insert_Sort(n);

    puts("\nThe sequence after insert_sort is:");

    for (i=1;i<=n;++i)
        printf("%4d",R[i]);

    putchar('\n');
/*    puts("\nPress any key to quit");

    getchar();
    getchar();*/
}

void Insert_Sort(int n)
{
    /*对数组R中的记录R[1..n]按递增序进行插入排序*/

    int i=0;
    int j=0;

    /*依次插入R[2],..,R[n]*/

    for (i=2;i<=n;++i)
        if (R[i-1]>R[i])
        {
            /*若R[i]大于等于有序区中所有的R,则R[i]应在原有位置上*/
            R[0]=R[i];
            j=i-1;
            /*R[0]是哨兵,且是R[i]的副本*/
            do
            {
                /*从右向左在有序区R[1..i-1]中查找R[i]的插入位置*/
                R[j+1]=R[j];
                /*将关键字大于R[i]的记录后移*/
                --j;
            }while (R[0]<R[j]);
            /*当R[i]>=R[j]时终止*/
            R[j+1]=R[0];
            /*R[i]插入到正确的位置上*/
        }
}
搜索更多相关主题的帖子: 资料 
2017-02-15 17:51
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
改进了一下代码~

程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void input(int a[],int n)
{
    int i=0;

    for (i=0;i!=n;++i)
        scanf("%d",&a[i]);
}
void print(int a[],int n)
{
    int i=0;

    for (i=0;i!=n;++i)
        printf("%-4d",a[i]);

    printf("\n");
}
void fun(int a[],int n)
{
    int i=0;
    int j=0;

    for (i=0;i<n-1;++i)
    {
        int key=a[i+1];

        for (j=i+1;j>0&&a[j-1]>key;--j)
            a[j]=a[j-1];

        a[j]=key;
    }
}
int main()
{
    int* a=NULL;
    int n=0;

    scanf("%d",&n);
    if (n<1||(a=(int* )malloc(n*sizeof(a)))==NULL)
        exit(0);

    input(a,n);

    fun(a,n);

    print(a,n);

    free(a);

    return 0;
}


[此贴子已经被作者于2017-2-16 02:40编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-16 02:37
快速回复:数据结构练习1~插入排序~
数据加载中...
 
   



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

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