十大排序算法——二分插入排序法(C语言)
二分插入排序法
直接插入排序方法:直接插入排序法
原理
按由大到小来说
同直接插入排序一样,也是分有序序列和无序序列,将待排序的无序序列插入到有序序列当中。
二分插入是把待插入数值先和有序序列的中间数值进行比较,如果比中间值大,就在中间值的左侧在找中间值进行比较,如果比中间值小,就在中间值的右侧在找中间值进行比较,直到找到合适的位置插入到有序序列中。
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语言)相关推荐
- 数据结构与算法:十大排序算法之插入排序
数据结构与算法:十大排序算法之插入排序 package TopTenSortingAlgorithms;import java.util.Arrays; import java.util.Scanne ...
- python实现排序算法_python实现·十大排序算法之插入排序(Insertion Sort)
简介 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法实现步骤 从第一个元素开 ...
- python sort 逆序_python实现·十大排序算法之插入排序(Insertion Sort)
简介 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法实现步骤 从第一个元素开 ...
- 十大排序算法之插入排序
插入排序 本文采用Java书写选择排序,其他语言类似可以借鉴着写 思想:由简单到复杂,多个数进行排序,我们可以考虑一个数,两个数慢慢增加进行排序.先排好N个数,让N+1个数跟前面N个数,从后往前进行比 ...
- 十大排序算法之堆排序 --- (C语言版)
简言:这里我只是给出了代码和注释,如果想要理解算法的意义,可以去看这位博主的讲解还是很清楚的.如果有不清楚的话,欢迎小伙伴私聊求问. 堆排序(C语言)_小-黯的博客-CSDN博客_堆排序c语言 这里需 ...
- 「干货总结」程序员必知必会的十大排序算法
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 绪论 身 ...
- 「归纳|总结」程序员必知必会的十大排序算法
微信搜一搜「bigsai」关注这个有趣的程序员 新人原创公众号,求支持一下!你的点赞三连肯定对我至关重要! 文章已收录在 我的Github bigsai-algorithm 欢迎star 本文目录 绪 ...
- 程序员必知必会的十大排序算法
绪论 身为程序员,十大排序是是所有合格程序员所必备和掌握的,并且热门的算法比如快排.归并排序还可能问的比较细致,对算法性能和复杂度的掌握有要求.bigsai作为一个负责任的Java和数据结构与算法方向 ...
- mysql外部排序算法_「干货总结」程序员必知必会的十大排序算法
绪论 身为程序员,十大排序是是所有合格程序员所必备和掌握的,并且热门的算法比如快排.归并排序还可能问的比较细致,对算法性能和复杂度的掌握有要求.bigsai作为一个负责任的Java和数据结构与算法方向 ...
- 程序员必备十大排序算法
程序员必备十大排序算法 常见排序算法 基本概念 插入排序 直接插入排序 排序思路 排序过程 代码实现 算法分析 折半插入排序 排序思路 排序过程 代码实现 算法分析 希尔排序 排序思路 排序过程 代码 ...
最新文章
- mysql存储过程分析
- 推荐的讲解算法的网站、好博客:
- bugku杂项题 白哥的鸽子 栅栏密码解密在线网站
- 腾讯云linux服务器怎么使用图形化界面_自己搭建一个自动签到和远程下载的服务器...
- 第七十期:IT技术人员的自我修养
- 人工智能生态环境预测_2020年全球人工智能芯片发展趋势及市场规模预测
- mysql三大范式_MySQL学习笔记
- C#中的volatile关键字
- 获取论坛cookie_注意:这是你成为Cookie时尚社区OG的最后机会!
- 同余定理在算法求解中的应用
- NetBeans在Apache基金会取得的进展
- HINSTANCE HANDLE HWND 的区别及一般方法
- 鸡啄米VS2010/MFC编程入门教程——学习3(安装VS2010)
- “乘风破浪”的芒果超媒,能上岸吗?
- a king读后感 love of the_电影读后感英文
- 2021年7月程序员工资统计,平均15302元
- 2021年一战南大AI上岸经验贴
- 泛在网作业-----码分多址通信
- 视频教程-经典Vue从入门到案例到源码分析教程(含资料)-Vue
- 《飞机大战小游戏(Java)》
热门文章
- 大学计算机专业分流考试,北京林业大学计算机类(入学一年后分流至计算机科学与技术、数字媒体技术、网络工程、计算机科学与技术(物联网))专业2016年在江苏理科高考录取最低分数线...
- gradle mysql方言_基于Spring Boot技术栈的博客系统企业级实战教程分享
- 计算机如何快速访问文件夹,高手教你如何快速定位文件夹(图文介绍)
- 如何实现手动指定AOP实现JDK代理模式到CGLIB的更改?
- 【转】mysql多表关联查询
- C# 中反射获取某类的子类和根据类型名动态创建对象(转载)
- 关于Python编码这一篇文章就够了
- ××× L2TP over IPSec 配置
- 多View统一Camera v1.2
- MYISAM表的.frm、MYI损坏,丢失的修复方法