C语言实现折半插入算法
2024-09-06 12:37:58
#include <stdio.h>
int BInsertSort(int array[],int left,int right){ //接收主函数调用语句中的实参传到这里的形参里
int low,high,mid;
int temp;
for(int i=left+;i<=right;++i){
temp=array[i]; //把第2个数(也就是下标1位置的数)存到temp临时变量里,即从第2个数开始往后的序列依次按照折半插入插入到第一个数的数列里(默认第一个数作为一个有序序列)
low=left; //将待插入的关键字要想插入到已经有序的序列中,需要找到插入位置,从此句往下为在有序序列中查找插入位置
high=i-; //在有序序列中设置左右下标变量low和high
while(low<=high){ //当low和high交换位置时结束查找
mid=(low+high)/;
if(array[i]<array[mid]) /*此while循环为折半查找算法*/
high=mid-;
else //如果待插入关键字大于或等于下标为mid处的关键字,都是在mid处后面进行插入
low=mid+;
}
for(int j=i-;j>=low;--j) //把从low号位置及其后的关键字全部后移一个位置,把待插入的关键字放在low号位置
array[j+]=array[j];
array[low]=temp;
}
return ;
}
int main(){
int a[]={,,,,,};
printf("排序前序列:");
for(int i=;i<;++i)
printf("%d\t",a[i]);
printf("\n");
BInsertSort(a,,); //调用BInsertSort函数,把待排序数组a,左下标0,右下标5传到形参
printf("排序后序列:");
for(int j=;j<;++j)
printf("%d\t",a[j]);
printf("\n");
return ;
}
最新文章
- OAF_开发系列24_实现OAF更新记录显示Record History(案例)
- Atitit 信用卡与会员卡(包括银行卡)的发展之路
- 使用PhpStrom等IDE编辑 远程linux服务器上的文件 实时更新
- C# List根据某一字段排序 将字段相同的排序到一起
- iar 数据类型 int folat
- iOS Block浅析
- Python基础学习笔记(十二)文件I/O
- Ubuntu 12.04 添加新用户并启用root登录
- 10327 - Flip Sort
- Floodlight 防火墙是如何起作用的
- Oracle 11g RAC OCR 与 db_unique_name 配置关系 说明
- php中函数 vsprintf() 和 var_export()
- javascript事件委托机制详解
- jQuery.proxy() 函数详解
- 从Android源码修改cpu信息
- day 7-6 多线程及开启方式
- project 2013 删除资源
- tkinter 写一个简易的ide
- JAVA关于泛型的笔记
- cnetos7最小化安装ifconfig命令找不到怎么办
热门文章
- VLAN(虚拟局域网)划分
- python把源代码打包成.exe文件
- BZOJ 1641 [Usaco2007 Nov]Cow Hurdles 奶牛跨栏:新版floyd【路径上最大边最小】
- python-多线程3-生产者消费者
- Spring MVC 中/和/*的区别
- 【Lintcode】033.N-Queens
- Python3解leetcode Valid Parentheses
- 【转】Pro Android学习笔记(五):了解Content Provider(上)
- Moco框架jar下载地址
- C# FileStream分块读取和保存文件