插入排序

插入排序:不断地将待排序序列插入到有序序列中,使有序序列逐渐扩大,直至所有待排元素全插入到有序序列中来。

直接插入排序和希尔排序

直接插入排序是一种比较简单的排序方法,它的基本思想是将待排序列中的每个元素依次插入到有序序列中。

希尔插入排序是先将待排序列分为几组,从而减小参与直接插入排序的数据量。就是先进行组内的直接插入排序,最后进行整个序列的排序。

代码如下:

直接插入:

#include<iostream>
using namespace std;

// 输入数组a[]的第一个元素不参与排序 
void insertSort(int a[], int n)
{
     for (int i = 2; i <= n; i++)
     {
         a[0] = a[i];
         int j = i - 1;
         while(a[0] < a[j] && j > 0 )
         {
                    a[j + 1] = a[j];
                    j = j - 1;
         }
         a[j + 1] = a[0];
     }
}

int main()
{
    int arry[10] = {9,6,4,7,3,8,1,0,12,5};
    insertSort(arry, 10);
    for (int i = 1; i < 10; i++)
    {
        cout << arry[i] << ends;    
    }
    cout << endl;
    system("pause");
    return 0;
}
希尔排序:

#include<iostream>
using namespace std;

void xiersort(int a[], int n)
{
     for (int d = n/2; d >= 1; d = d/2)
     {
         for (int i = d + 1; i <= n; i++)
         {
             a[0] = a[i];
             int j = i - d;
             while (j > 0 && a[0] < a[j])
             {
                   a[j + d] = a[j];
                   j = j - d;
             }
             a[j + d] = a[0];
         }
     }
}
int main()
{
    int arry[10] = {2,34,5,7,4,3,9,8,7,10};
    xiersort(arry, 10);
    for (int i = 1; i < 10; i++)
    cout << arry[i] << ends;
    cout << endl;
    system("pause");
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值