Algorithms - 排序算法之一:插入排序

1.直接插入排序

void DirectInsertSort1(int aryData[], int iNum)
{
     //i为从第二个开始,要插入到前面已排好的序列中;
     for(int i=1; i<iNum; i++)
     {
         //j为当前i-1个已排好的序列的游标;
         for(int j=0; j<i; j++)
         {
             if(aryData[j]>aryData[i])
             {
                 //记录第i个数据,从i开始依次往挪数据;
                 int temp = aryData[i];
                 for(int k=i; k>j; k--)
                 {
                     aryData[k] = aryData[k-1];    
                 }
                 aryData[j] = temp;
                 break;                        
             }    
         }
     }
     
     return;
 }


void DirectInsertSort(int aryData[], int iNum)
{
     //i为从第二个开始,要插入到前面已排好的序列中;
     for(int i=1; i<iNum; i++)
     {
         //少一层循环;
         for(int j=i; j>0 && aryData[j]<aryData[j-1]; j--)
         {
             int temp = aryData[j];
             aryData[j] = aryData[j-1];
             aryData[j-1]= temp;
         }
     }
     
     return;
 }

***************************************************************************************************************************************

2.折半插入排序

3.二路插入排序

4.表插入排序

5.希尔排序

待完成;

***************************************************************************************************************************************

6.main()函数调用

int main(int argc, char *argv[])
{
    /*
    char* strA;
    char strB[12] = "12345678900";
    _strcpy(strA, strB);
    cout<<strA<<endl;
    */
    
    /*
    int Y = 2004;
    int M = 12;
    int D = 31;
    int H = 23;
    int Min = 59;
    int S = 59;
    NextSecond(Y, M, D, H, Min, S);
    cout<<"Next Second:"<<endl;
    cout<<Y<<"."<<M<<"."<<D<<" "<<H<<":"<<Min<<":"<<S<<endl;
    */
    
    int ary[5] = {4,2,5,1,3};
    int n = 5;
    DirectInsertSort(ary, n);
    for(int i=0; i<5; i++)
    {
        cout<<ary[i]<<endl;    
    }
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值