插入排序

深入理解 JVM 原理
深入理解 JVM 原理
wangxiaoming

                                                                                      插入排序(从小到大)

                      首先算法思想

                                        插入排序主要思想是假设前面的已经排好了 

                                         第一轮将数组分为 {a1} {a2 a3.......ak}   a2作为要插入{a1} 数组的数  赋值给 key  比较大小 找到插入位置 ,大于key 的那部分 集体块搬移(即集体后移一位 )                             

                                          第二轮将数组分为 {a1 a2}  { a3 a4....ak}      {a1 a2} 已经排好了 a3作为要插入的值  

                                          第三轮

                                          第四轮。。。。。

                     其次 算法复杂度分析

                                  1、比较的次数 第一轮 n -1次 第二轮 n-2次 。。。。。1 共  (n-1)n/2 次

                                   2、  移动次数  n-1  n-1......1共 (n-1)n/2次

                                   3、赋值key的次数 和将key取出给 插入点的次数 共 2(n-1) 次

                                   算法复杂度为O(n^2)

                   最后源代码

 

 

#include<iostream>

using namespace std;

void InsertSort(int a[], int n)
{
    int i, j, key;                         //插入排序的思想是将数组分成已经排好的和没有排好的
    for(j = 2; j <= n ; j++)
    {
        key = a[j];
        i = j-1;
        while(i > 0 && key <= a[i])
        {
            a[i+1] = a[i] ;             //前面的数大于key值那么平移前面大于key的数,从小到大排序
            i = i-1;
        }
        a[i+1] = key;                 //平移完成进行赋值插入
    }

}
int main()
{
    int a[1000];
    int i;
    cout<<"Please Enter Some Numbers"<<endl ;

    for(i = 1; i <= 7; i++)
    {
        cin>>a[i];
    }
    InsertSort(a, 7);

    for(i = 1; i <= 7; i++)
    {
        cout<<a[i]<<" ";
    }
    return 0;
}

wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值