二分插入排序法

直接插入排序方法:直接插入排序法

比较着看可以加深印象

原理

按由大到小来说
同直接插入排序一样,也是分有序序列和无序序列,将待排序的无序序列插入到有序序列当中。
二分插入是把待插入数值先和有序序列的中间数值进行比较,如果比中间值大,就在中间值的左侧在找中间值进行比较,如果比中间值小,就在中间值的右侧在找中间值进行比较,直到找到合适的位置插入到有序序列中。

C语言代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>//type为 0 时排序从小到大,为 1 时排序从大到小
void Insertion(int a[],int n,int type)
{for ( int i = 1; i < n; i++){int temp=a[i];  //临时待插入值int left=0;  //左侧边界值int right=i-1;  //右侧边界值while (left <= right){int mid = (left+right) / 2;  //中间值if(type == 0 ? (a[mid] > temp) : (a[mid] < temp)){right = mid - 1;   //把右侧边界缩小,在中间值得左边进行寻找}else {left = mid + 1;  //把左侧边界加大,在中间值得右边进行寻找}            }for ( int j = i-1; j >= left; j--)  //将left到i-1之间的数都往后移动一个位置//注意如果要插入的数比前面排好序的数都大或者都小,则不会进入到该循环内,则此时将不会有数进行位置的移动{a[j+1] = a[j];}a[left] = temp;      //将要插入的数值插入到合适位置       }
}
void main()
{int a[10];int i;//请输入十个整数printf("请输入十个整数:\n");for ( i = 0; i <10; i++){scanf("%d",&a[i]);}Insertion(a,10,1);  //调用二分插入排序法//输出结果for ( i = 0; i < 10; i++){printf("%d \n",a[i]);}system("pause");  //为了防止控制台闪退用的
}

有说的不对的地方请各位大佬多多指教!

十大排序算法——二分插入排序法(C语言)相关推荐

  1. 数据结构与算法:十大排序算法之插入排序

    数据结构与算法:十大排序算法之插入排序 package TopTenSortingAlgorithms;import java.util.Arrays; import java.util.Scanne ...

  2. python实现排序算法_python实现·十大排序算法之插入排序(Insertion Sort)

    简介 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法实现步骤 从第一个元素开 ...

  3. python sort 逆序_python实现·十大排序算法之插入排序(Insertion Sort)

    简介 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法实现步骤 从第一个元素开 ...

  4. 十大排序算法之插入排序

    插入排序 本文采用Java书写选择排序,其他语言类似可以借鉴着写 思想:由简单到复杂,多个数进行排序,我们可以考虑一个数,两个数慢慢增加进行排序.先排好N个数,让N+1个数跟前面N个数,从后往前进行比 ...

  5. 十大排序算法之堆排序 --- (C语言版)

    简言:这里我只是给出了代码和注释,如果想要理解算法的意义,可以去看这位博主的讲解还是很清楚的.如果有不清楚的话,欢迎小伙伴私聊求问. 堆排序(C语言)_小-黯的博客-CSDN博客_堆排序c语言 这里需 ...

  6. 「干货总结」程序员必知必会的十大排序算法

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 绪论 身 ...

  7. 「归纳|总结」程序员必知必会的十大排序算法

    微信搜一搜「bigsai」关注这个有趣的程序员 新人原创公众号,求支持一下!你的点赞三连肯定对我至关重要! 文章已收录在 我的Github bigsai-algorithm 欢迎star 本文目录 绪 ...

  8. 程序员必知必会的十大排序算法

    绪论 身为程序员,十大排序是是所有合格程序员所必备和掌握的,并且热门的算法比如快排.归并排序还可能问的比较细致,对算法性能和复杂度的掌握有要求.bigsai作为一个负责任的Java和数据结构与算法方向 ...

  9. mysql外部排序算法_「干货总结」程序员必知必会的十大排序算法

    绪论 身为程序员,十大排序是是所有合格程序员所必备和掌握的,并且热门的算法比如快排.归并排序还可能问的比较细致,对算法性能和复杂度的掌握有要求.bigsai作为一个负责任的Java和数据结构与算法方向 ...

  10. 程序员必备十大排序算法

    程序员必备十大排序算法 常见排序算法 基本概念 插入排序 直接插入排序 排序思路 排序过程 代码实现 算法分析 折半插入排序 排序思路 排序过程 代码实现 算法分析 希尔排序 排序思路 排序过程 代码 ...

最新文章

  1. mysql存储过程分析
  2. 推荐的讲解算法的网站、好博客:
  3. bugku杂项题 白哥的鸽子 栅栏密码解密在线网站
  4. 腾讯云linux服务器怎么使用图形化界面_自己搭建一个自动签到和远程下载的服务器...
  5. 第七十期:IT技术人员的自我修养
  6. 人工智能生态环境预测_2020年全球人工智能芯片发展趋势及市场规模预测
  7. mysql三大范式_MySQL学习笔记
  8. C#中的volatile关键字
  9. 获取论坛cookie_注意:这是你成为Cookie时尚社区OG的最后机会!
  10. 同余定理在算法求解中的应用
  11. NetBeans在Apache基金会取得的进展
  12. HINSTANCE HANDLE HWND 的区别及一般方法
  13. 鸡啄米VS2010/MFC编程入门教程——学习3(安装VS2010)
  14. “乘风破浪”的芒果超媒,能上岸吗?
  15. a king读后感 love of the_电影读后感英文
  16. 2021年7月程序员工资统计,平均15302元
  17. 2021年一战南大AI上岸经验贴
  18. 泛在网作业-----码分多址通信
  19. 视频教程-经典Vue从入门到案例到源码分析教程(含资料)-Vue
  20. 《飞机大战小游戏(Java)》

热门文章

  1. 大学计算机专业分流考试,北京林业大学计算机类(入学一年后分流至计算机科学与技术、数字媒体技术、网络工程、计算机科学与技术(物联网))专业2016年在江苏理科高考录取最低分数线...
  2. gradle mysql方言_基于Spring Boot技术栈的博客系统企业级实战教程分享
  3. 计算机如何快速访问文件夹,高手教你如何快速定位文件夹(图文介绍)
  4. 如何实现手动指定AOP实现JDK代理模式到CGLIB的更改?
  5. 【转】mysql多表关联查询
  6. C# 中反射获取某类的子类和根据类型名动态创建对象(转载)
  7. 关于Python编码这一篇文章就够了
  8. ××× L2TP over IPSec 配置
  9. 多View统一Camera v1.2
  10. MYISAM表的.frm、MYI损坏,丢失的修复方法