插入运算排序的"代码理解"(个人笔记)

函数代码:

voidin_sort(intarr[],intn)//插入排序(数组,数组长度)不设置"监视哨"法
//设置"监视哨"其实就是传入函数的arr数组指针向后指了一位,预留出arr[0]作为temp使用
{
    //arra[10] = { 49,38, 65, 97, 76, 13, 27, 49, 55, 04 };
    inttemp;
    intx;
    for(inti=1;i<n;i++)
    {
       temp=arr[i];
       x=i;
       while(temp<arr[x-1])
       {
           arr[x]=arr[x-1];
           x--;
       }
       arr[x]=temp;
    }
}

便于理解运算过程:

i=1;

    temp=arr[1]={38};

    x=i;               =>x=1

    while(temp={38}<arr[x-1]={49})

    {

       arr[x]=arr[x-1];

       arr[1]=arr[0];

       temp={38},arr[]={49, 49], 65, 97, 76, 13, 27, 49, 55, 04 };

       x--;=>x=0;

    }

    arr[0]=temp={38};

    arr[]={ 38, 49],65, 97, 76, 13, 27, 49, 55, 04 };

 

i=2

    temp=arr[2]={65};

    x=i;              =>x=2

    while(temp={65}<arr[x-1]={49})

    {

       不执行;

       x=2;

    }

    arr[2]=temp={65};

    arr[]={ 38, 49,65], 97, 76, 13, 27, 49, 55, 04 };

 

i=3

    temp=arr[3]={97};

    x=i;              =>x=3

    while(temp={97}<arr[x-1]={65})

    {

       不执行;

       x=3;

    }

    arr[3]=temp={97};

    arr[]={ 38, 49,65, 97], 76, 13, 27, 49, 55, 04 };

 

i=4

    temp=arr[4]={76};

    x=i;              =>x=4

    while(temp={76}<arr[x-1]={97})

    {

       arr[x]=arr[x-1];

       arr[4]=arr[3]={97};

       temp={76},arr[]={38,49, 65, 97, 97], 13, 27, 49, 55, 04 };

       x--;

    x=3    while(temp={76}<arr[x-1]={65})

              {

                  不执行;

                  x=3

              }

    }

    arr[3]=temp={76};

    arr[]={ 38, 49,65, 76, 97], 13, 27, 49, 55, 04 };

 

i=5

    temp=arr[5]={13};

    x=i;              =>x=5

    while(temp={13}<arr[x-1]={97})

    {

       arr[x]=arr[x-1];

       arr[5]=arr[4]={97};

       temp={13},arr[]={38, 49, 65, 76, 97, 97], 27, 49, 55, 04 };

       x--;

    x=4;   while(temp={13}<arr[x-1]={97})

              {

                  arr[x]=arr[x-1];

                  arr[4]=arr[3]={76};

                  temp={13},arr[]={38, 49, 65, 76, 76, 97], 27, 49, 55, 04 };

                  x--;

              }

    x=3;          while(temp={13}<arr[x-1]={97})

                     {

                         arr[x]=arr[x-1];

                         arr[3]=arr[2]={65};

                         temp={13},arr[]={38, 49, 65, 65, 76, 97], 27, 49, 55, 04 };

                         x--;

                     }

    x=2;                 while(temp={13}<arr[x-1]={97})

                            {

                                arr[x]=arr[x-1];

                                arr[2]=arr[1]={49};

                                temp={13},arr[]={38, 49, 49, 65, 76, 97], 27, 49, 55, 04 };

                                x--;

                            }

    x=1;                        while(temp={13}<arr[x-1]={97})

                                   {

                                       arr[x]=arr[x-1];

                                       arr[1]=arr[0]={38};

                                       temp={13},arr[]={38, 38, 49, 65, 76, 97], 27, 49, 55, 04 };

                                       x--;

                                   }

    x=0;

    arr[0]=temp={13};

    arr[]={ 13, 38,49, 65, 76, 97], 27, 49, 55 , 04 };

    看到这里相信大概能了解他是如何运算的了.以下省略更多的代码运算过程.

 

初始关键字 :

原数组:

 

arr[]={49,38,65,97,76,13,27,49,55,04};

i=1

arr[]={38,49|,65,97,76,13,27,49,55,04};

i=2

arr[]={38,49,65|,97,76,13,27,49,55,04};

i=3

arr[]={38,49,65,97],76,13,27,49,55,04};

i=4

arr[]={38,49,65,76,97|,13,27,49,55,04};

i=5

arr[]={13,38,49,65,76,97|,27,49,55,04};

i=6

arr[]={13,27,38,49,65,76,97|,49,55,04};

i=7

arr[]={13,27,38,49,49,65,76,97|,55,04};

i=8

arr[]={13,27,38,49,49,55,65,76,97|,04};

i=9

arr[]={04,13,27,38,49,49,55,65,76,97|};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值