函数代码:
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|}; |