算法 - 排序 - 直接插入排序

void  lnsertSort(SeqList R)

    
// 对顺序表R中的记录R[1..n]按递增序进行插入排序
    int i,j;
    
for(i = 2;i <= n;i++)    // 依次插入R[2],…,R[n]
        if(R[i].key<R[i-1].key)
        
{
            
// 若R[i].key大于等于有序区中所有的keys,则R[i]应在原有位置上
            R[temp] = R[i];
            j 
= i - 1;
            
do
            

                
// 从右向左在有序区R[1..i-1]中查找R[i]的插入位置
                R[j + 1= R[j]; // 将关键字大于R[i].key的记录后移
                j--;
            }
while(R[0].key < R[j].key); // 当R[i].key≥R[j].key时终止
            R[j + 1= R[temp]; // R[i]插入到正确的位置上
        }
 // endif
}
  //  InsertSort 

void  lnsertSort( int [] x)
{             
    
int j,temp;
    
for(int i = 1; i < x.Length; i++// 依次插入x[1],…,x[n-1]
        if(x[i] < x[i - 1])
        
{                    
            temp 
= x[i];
            j 
= i - 1;
            
do
            
{                         
                x[j 
+ 1= x[j]; 
                j
--;
            }
while(temp < x[j]); 
            x[j 
+ 1= temp; 
        }
 // endif
}
  //  InsertSort 

你可能感兴趣的:(算法 - 排序 - 直接插入排序)