• 用c语言编写直接插入法


     1 #include<stdio.h>
     2 
     3 //直接插入法
     4 void D_insert(int s[],int n);
     5 int main()
     6 {
     7     int i;
     8     int a[6];
     9     printf("please enter five numbers:
    ");
    10     for(i=1;i<6;i++)
    11     {
    12         scanf("%d",&a[i]);
    13     }
    14     D_insert(a,5);
    15     printf("after number:
    ");
    16     for(i=1;i<6;i++)
    17     {
    18         printf("%4d",a[i]);
    19     }
    20     printf("
    ");
    21 }
    22 void D_insert(int s[],int n)
    23 {
    24     int j,i;
    25     
    26     for(i=2;i<=n;i++)
    27     {
    28         s[0]=s[i];
    29         j=i-1;
    30         while(s[j]>=s[0]  &&  j>1)
    31         {
    32             s[j+1]=s[j];
    33             j--;
    34         }
    35         s[j+1]=s[0];
    36 
    37     }
    38 }

    这是相应的代码

    在方法函数的时候,又卡壳了。这是在n次编写之后的卡壳。

    下面就方法函数具体解释一下。

    首先空出一个来当哨兵。这里设定的为a[0];总共有n个数,则循环n-1次。所以i从2到n开始循环。把a[0]中放入要插入的数字,然后依次和之前的数字比较,如果比其小,则元素后移。

    按照这个原理,则有另一种的表示方法了

     1 #include<stdio.h>
     2 
     3 //直接插入法
     4 void D_insert(int s[],int n);
     5 int main()
     6 {
     7     int i;
     8     int a[6];
     9     printf("please enter five numbers:
    ");
    10     for(i=1;i<6;i++)
    11     {
    12         scanf("%d",&a[i]);
    13     }
    14     D_insert(a,5);
    15     printf("after number:
    ");
    16     for(i=1;i<6;i++)
    17     {
    18         printf("%4d",a[i]);
    19     }
    20     printf("
    ");
    21 }
    22 void D_insert(int s[],int n)
    23 {
    24     int j,i;
    25     
    26     for(i=2;i<=n;i++)
    27     {
    28         s[0]=s[i];
    29 
    30         while(s[i-1]>=s[0]  &&  i>1)
    31         {
    32             s[i]=s[i-1];
    33             i--;
    34         }
    35         s[i]=s[0];
    36 
    37     }
    38 }
  • 相关阅读:
    飞跃平野(sdut1124)
    背包
    sdut2193救基友记3(三维)
    hdu1542 Atlantis(矩阵面积的并)
    hdu1505City Game(扫描线)
    poj3468A Simple Problem with Integers(线段树的区域更新)
    hdu1166敌兵布阵&&hdu1754I Hate It(线段树入门)
    Biorhythms(中国剩余定理)
    Sequence(priority_queue)
    Message Flood(map)
  • 原文地址:https://www.cnblogs.com/xiaochige/p/5997274.html
Copyright © 2020-2023  润新知