拓扑排序c语言代码_折半插入排序算法(C语言代码实现)

news/2025/2/25 2:38:05

上一节介绍了直接插入排序算法的理论实现和具体的代码实现,如果你善于思考就会发现该算法在查找插入位置时,采用的是顺序查找的方式,而在查找表中数据本身有序的前提下,可以使用折半查找来代替顺序查找,这种排序的算法就是折半插入排序算法。该算法的具体代码实现为:

#include void print(int a[], int n ,int i){    printf("%d:",i);    for(int j=0; j        printf("%d",a[j]);    }    printf("\n");}void BInsertSort(int a[],int size){    int i,j,low = 0,high = 0,mid;    int temp = 0;    for (i=1; i        low=0;        high=i-1;        temp=a[i];        //采用折半查找法判断插入位置,最终变量 low 表示插入位置        while (low<=high) {            mid=(low+high)/2;            if (a[mid]>temp) {                high=mid-1;            }else{                low=mid+1;            }        }        //有序表中插入位置后的元素统一后移        for (j=i; j>low; j--) {            a[j]=a[j-1];        }        a[low]=temp;//插入元素        print(a, 8, i);    }   }int main(){    int a[8] = {3,1,7,5,2,4,9,6};    BInsertSort(a, 8);    return 0;}

运行结果为:

1:13752496
2:13752496
3:13572496
4:12357496
5:12345796
6:12345796
7:12345679

折半插入排序算法相比较于直接插入排序算法,只是减少了关键字间的比较次数,而记录的移动次数没有进行优化,所以该算法的时间复杂度仍是 O(n2)

e06a8cf138c61b062ea29acbf9c512ad.png


http://www.niftyadmin.cn/n/1895010.html

相关文章

分布式数据库操作笔记

/*映射和删除远程服务器连接 */exec sp_addlinkedserver serverdemo, srvproduct,datasrc192.168.2.93,providerSQLOLEDB /* 不能再事务中执行存储过程*/ exec sp_dropserver demo select * from sys.servers /*查询此服务器中所有服务器映射记录 */ /*映射和删除远程服务器…

yii2安装mysql_linux 安装mysql5.6

Linux:Centos1.先查看系统上有没有安装了旧版本的MySQL &#xff0c;用下面的命令&#xff1a;rpm -qa | grep mysql如果有&#xff0c;用以下命令卸载rpm -e --nodeps 上步显示mysql名称安装编译mysql 需要的依赖包yum install libevent* libtool* autoconf* libstd* ncurse* …

分布式数据库概述

http://fineboy.cnblogs.com/archive/2005/08/03/206395.html

sql server分布式事务解决方案

http://nihaiou.blog.51cto.com/790190/394693

hibernate pom mysql_Hibernate+maven+mysql

最近在研究hibernate&#xff0c;想建立一个简单的Hibernatemavenmysql工程&#xff0c;网上找了一大堆的示例&#xff0c;要么看不懂结构&#xff0c;要么就是缺少必要文件。总之都没有成功&#xff0c;结果无意在一个外文网上找了一个实例&#xff0c;惊叹于人家的排版。也不…

TransactionScope 分布式事务

TransactionScope 分布式事务 TransactionScope是.Net Framework 2.0滞后&#xff0c;新增了一个名称空间。它的用途是为数据库访问提供了一个“轻量级”[区别于&#xff1a;SqlTransaction]的事物。使用之前必须添加对 System.Transactions.dll 的引用。下列代码就是一个正在…

spring-session剖析

2019独角兽企业重金招聘Python工程师标准>>> 一、使用场景 1&#xff09;一台服务器上的软负载均衡应用 2&#xff09;分布式应用 二、实现方式 1&#xff09;session数据存cookie 将session存储至cookie中&#xff0c;每次请求从cookie中读取session&#xff0c;缺…

css学习笔记(一)

position定位 CSS position属性用于指定一个元素在文档中的定位方式。top&#xff0c;right&#xff0c;bottom 和 left 属性则决定了该元素的最终位置。 定位类型 定位元素&#xff08;positioned element&#xff09;是其计算后位置属性为 relative, absolute, fixed 或 stic…