zoukankan      html  css  js  c++  java
  • 插入排序法

    模型:扑克牌

       开始时,我们左手为空并且桌上的牌面向下。然后我们每次从桌上拿走一张牌并将它插入左手中正确的位置。

       为了找到一张牌的正确位置,我们从右到左将它与已经在左手中的每张牌进行比较,拿在左手中的牌总是

       排好序的,原来这些牌是桌上牌堆中顶部的牌

    伪代码:

    我们用缩进表示块结构。
    当一个 for 循环每次迭代增加其循环次数时,我们使用关键词 to,反之则用 downto。
    当循环计数器以大于 1 的一个量改变时,该该变量跟在可选关键词 by 之后。

    复合数据通常被组织成对象,对象又由属性组成。我们使用许多面向对象编程语言中创建的句法来
    访问特定的属性:对象名后跟一个点再跟属性名。

    有时一个指针根本不指向任何对象。这时,我们赋给它特殊值 NIL。

    //INSERTION-SORT(A)
       
         for j=2 to A.length
             key=A[j]
             // Insert A[j] into the sorted sequence A[1..j-1].
             i=j-1
             while i>0 and A[i]>key
                   A[i+1]=A[i]
                   i=i-1
             A[i+1]=key

    例代码(升序):

    #include<stdio.h>
    int *insert(int num[],int n);
    int main(void)
    {
        int i,*p,a[]={5,2,4,6,1,3};
        int x=sizeof(a)/sizeof(a[0]);
        p=insert(a,x);
        for(i=0;i<x;i++)
        {
            printf("%2d",*(p+i));
        }
        printf("
    ");
        return 0;
    }
    
    int *insert(int num[],int n)
    {
        int i,j,key;
        for(j=1;j<n;j++)
        {
            key=num[j];
            i=j-1;
            while(i>=0 && num[i]>key)
            {
                num[i+1]=num[i];
                i--;
            }
            num[i+1]=key;
        }
        return num;
    }
  • 相关阅读:
    分形之城
    【SDOI2011 第2轮 DAY1】消防 树上问题+二分+贪心
    【Usaco Nov08 Gold】玩具 三分+贪心
    分治 复习
    快读板子
    最小线段覆盖 C神奇项链
    比赛经验积累1
    字符串 专题
    界面小项目之W3C
    前端小基础
  • 原文地址:https://www.cnblogs.com/M-Anonymous/p/9290849.html
Copyright © 2011-2022 走看看