当前位置: 首页 > news >正文

湖南做网站 要上磐石网络网站设计主页

湖南做网站 要上磐石网络,网站设计主页,网站制作学校找哪家,wordpress不能放flv插入排序 基本思想 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。 打扑克牌整理手牌用的就是插入排序的思想 代码实现 void InsertSort(int* a, int n) { assert(a); …

插入排序

基本思想


把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。

打扑克牌整理手牌用的就是插入排序的思想

代码实现


void InsertSort(int* a, int n)
{
    assert(a);
    for (int i = 0; i < n - 1; i++)//将一个数组中所有元素升序
    {                              //,这里必须是n-1,不然后面数组会越界
        int end=i;
        int x=a[end+1];//x始终指向end下一个位置的值
        while (end >= 0)//每趟插入最多挪动end-1个数据
        {
            if (a[end] > x)//x前一个数大于x,就将数据往后移一格
            {
                a[end + 1] = a[end];//这里数组的值会往后覆盖
                                    //但是没关系,我们已经将a[end+1]的值保存在x当中了
                end--;
            }
            else
            {
                break;//跳出里面的while循环
            }
        }
        a[end + 1] = x;
    }
}

 

特性总结

1. 元素集合越接近有序,直接插入排序算法的时间效率越高
2. 时间复杂度:O(N^2)
3. 空间复杂度:O(1),它是一种稳定的排序算法
4. 稳定性:稳定

选择排序

基本思想

每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。

就像小学生排队一样,让最矮的那个站到第一排,然后让第二矮的占到第二排,以此类推

代码实现

void SelectSort(int* a, int n)
{
    int begain = 0;
    int end = n - 1;
    while (begain < end)
    {
        int maxi = begain;//初始化最值
        int mini = begain;
        for (int i = begain; i <= end; i++)
        {
            if (a[i] < a[mini])
            {
                mini = i;//记录下标,否则会有数据被覆盖的问题
            }
            if (a[i] > a[maxi])
            {
                maxi = i;
            }
        }
        swap(&a[begain], &a[mini]);//将最大最小值交换
        swap(&a[end], &a[maxi]);
        begain++;//数组范围往中间缩小
        end--;
    }
}

 

代码优化

上述思想是单向的,我们可以让最高的和最矮的同时排序,就可以优化一下,实现双向排序


void SelectSort(int* a, int n)
{
    int begain = 0;
    int end = n - 1;
    while (begain < end)
    {
        int maxi = begain;
        int mini = begain;
        for (int i = begain; i <=end; i++)
        {
            if (a[i] < a[mini])
            {
                mini = i;//记录下标,否则会有数据被覆盖的问题
            }
            if (a[i] > a[maxi])
            {
                maxi = i;
            }
        }
        swap(&a[begain], &a[mini]);
        if (maxi == begain)//当最大值为begain时,交换最小值和开头元素后,maxi指向的值不再是最大值了.
        {
            maxi = mini;
        }
        swap(&a[end], &a[maxi]);
        begain++;
        end--;
    }
}

 

特性总结

1. 直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用
2. 时间复杂度:O(N^2)
3. 空间复杂度:O(1)
4. 稳定性:不稳定

http://www.yayakq.cn/news/433463/

相关文章:

  • 网站开发制作公司名称安贞网站建设
  • 上海网站搭建公司哪家好禅城区网站建站网站
  • 网站建设企业电话建设工程交流网站
  • 建设网站的公司济南兴田德润o简介图片wordpress appcan-wp
  • 手机端快速建站工具广西网站建设企业
  • 好的响应式网站一个人搞得定网站建设
  • 公司网站建设情况报告成武县住房和城乡建设局网站
  • 苏州吴中区建设局工程网站免费wap网站建设
  • 金华网站制作系统模板建站和定制网站的对比
  • 使页面具有动态效果的网站建设技术是wordpress iconic
  • 东昌府网站制作上海金瑞建设集团网站
  • 建设工程有限公司 网站免费元素素材网站
  • 网站做支付郑州官网seo
  • 做网站賺钱工业设计产品开发
  • 合肥做网站便宜wordpress调用内容代码
  • 通信工程建设网站网站建设模板系统
  • 打电话给客户怎样介绍自己是做网站的?开场白?互联网产品运营是做什么的
  • 设计企业品牌网站上海注册公司需要多少钱
  • 线上广告推广宁波优化系统
  • 苏州网站开发公司有哪些重庆网站制作系统
  • 360路由器网站建设英文定机票网站建设
  • 网页站点的建立流程泰安求职招聘网
  • 免费搭建网站的软件wordpress客户端登陆
  • 网站建设完成之后要索取哪些2013深圳网站设计公司排名
  • 如何做高网站的浏览量jsp网站空间网站开发
  • 随州网站设计开发服务网站建设编写代码出错
  • 河北地矿建设集团官方网站帮忙注册公司要多少钱
  • 文化馆网站建设情况国家公信网查询系统
  • 哪个网站能免费下载淮南市城乡建设局网站
  • 做网站荣耀体验服官网wordpress 密码 hello