2-路插入排序c语言算法,浅谈2路插入排序算法及其简单实现

2路插入排序算法是在直接插入排序算法的基础上增加了一个辅助数组,其目的是减少排序过程中的移动次数,需要增加n个记录的辅助空间。

难点可能在于对取余的考虑吧,可以把辅助数组看成一个环状空间,这样就能更好的理解辅助空间中最大值和最小值的位置了。

算法整体思想还是很简单的,直接贴出可运行代码,注释还是挺清楚的,大家直接看就ok了

C语言实现示例

#include #include void insert_sort(int *arr, int *temp, int n) { int i, first, final, k; first = final = 0; temp[0] = arr[0]; for (i = 1; i < n; i ++) { if (arr[i] < temp[first]) { // 待插入元素比最小的元素小 first = (first - 1 + n) % n; temp[first] = arr[i]; } else if (arr[i] > temp[final]) { // 待插入元素比最大元素大 final = (final + 1 + n) % n; temp[final] = arr[i]; } else { // 插入元素比最小大,比最大小 k = (final + 1 + n) % n; while (temp[((k - 1) + n) % n] > arr[i]) { temp[(k + n) % n] =temp[(k - 1 + n) % n]; k = (k - 1 + n) % n; } temp[(k + n) % n] = arr[i]; final = (fianl + 1 + n) % n; } } // 将排序记录复制到原来的顺序表里 for (k = 0; k < n; k ++) { arr[k] = temp[(first + k) % n]; } } int main(void) { int i, n, *arr, *temp; while (scanf("%d", &n) != EOF) { arr = (int *)malloc(sizeof(arr) * n); temp = (int *)malloc(sizeof(temp) * n); for (i = 0; i < n; i ++) scanf("%d", &arr[i]); insert_sort(arr, temp, n); for (i = 0; i < n; i ++) printf("%d ", arr[i]); printf("n"); free(arr); free(temp); } return 0; }

同时附上C++写法:

#includeusing namespace std;#define MAX 20void PrintArray(int a[],int len){ for(int i=0;i=d[final]){ final=final+1; d[final]=a[i]; } else{ int j=final++; while(a[i]>len; cout<>a[i]; BinInsertSort(a,len); system("pause"); return 0;}

【浅谈2路插入排序算法及其简单实现】相关文章:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql安装被打断_Mysql的安装/性能优化/安全加固

aa安装&#xff1a;增加一个登录用户和群组#groupaddmysql#useradd -r -g mysql mysql解压缩Mysql数据包#tar-zxvf mysql-5.6.13.tar.gz进入Mysql解压缩目录#cd mysql-5.6.13配置安装mysql#cmake.#make &&make install建立配置文件#cp./support-files/my-medium.cnf/et…

python自动输入账号密码_Python如何基于selenium实现自动登录博客园

这篇文章主要介绍了Python如何基于selenium实现自动登录博客园,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需要做的准备&#xff1a; 本文章是使用Chrome&#xff0c;所以需要Chormedriver.exe&#xff0c;…

安卓软件错误log_Android编程实现捕获程序异常退出时的错误log信息功能详解

本文实例讲述了Android编程实现捕获程序异常退出时的错误log信息功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;很多时候我们程序无缘无故的就挂掉了&#xff0c;让我们一头雾水&#xff0c;如果刚好我们在调试&#xff0c;那我们可以通过错误log来查看是什么原因…

android 模拟长按菜单键_如何采用PLC梯形图实现单键启动程序

“PLC是一种专门为在工业环境下应用而设计的数字运算操作的电子装置。它采用可以编制程序的存储器&#xff0c;用来在其内部存储执行逻辑运算、顺序运算、计时、计数和算术运算等操作的指令&#xff0c;并能通过数字式或模拟式的输入和输出&#xff0c;控制各种类型的机械或生产…

android 日期对话框,Android日期选择器对话框DatePickerDialog使用详解

调用Android原生日期选择器对话框就是DatePickerDialog&#xff0c;具体内容如下在Android4.4系统上效果如图&#xff1a;在Android5.0以上效果如图&#xff1a;1、Activity的onCreate方法中获取当时的年&#xff0c;月&#xff0c;日Calendar ca Calendar.getInstance();mYea…

c#endread怎么打印出来_NetworkStream.EndRead(IAsyncResult) 方法 (System.Net.Sockets) | Microsoft Docs...

处理异步读取的结束。Handles the end of an asynchronous read.public:override int EndRead(IAsyncResult ^ asyncResult);public override int EndRead (IAsyncResult asyncResult);override this.EndRead : IAsyncResult -> intPublic Overrides Function EndRead (asyn…

wp自定义帖子没标签_ofollow标签的作用有重大变化

nofollow标签的历史经典的nofollow标签作用和使用方法以前的帖子写过&#xff0c;详情读者可以参考以前帖子。nofollow标签&#xff08;准确说是属性&#xff0c;不过约定俗成&#xff0c;还是叫标签吧&#xff09;是Google和Yahoo等搜索引擎2005年推出的&#xff0c;目的是告诉…

android电视视频播放器,智能电视如何播放本地视频?当贝市场分享几款播放器...

原标题&#xff1a;智能电视如何播放本地视频&#xff1f;当贝市场分享几款播放器对视频清晰度要求更高的用户普遍会自己下载视频&#xff0c;然后通过本地播放的方式观影&#xff0c;那么&#xff0c;下面就给大家介绍几款智能电视的本地视频播放软件&#xff0c;包你好用。当…

c 复杂的前置后置面试题_你被哪些C语言面试题坑过?

最近在《深入理解计算机系统》上看到一道题&#xff0c;分享一下&#xff1a;假设我们在对有符号值使用补码运算的32位机器人运行代码。对于有符号值使用的是算术右移&#xff0c;而对于无符号值使用的是逻辑右移。变量的声明和初始化如下&#xff1a;int x foo(); //任意值in…

python 三引号_Python 简明教程 --- 4,Python 变量与基本数据类型

微信公众号&#xff1a;码农充电站pro 个人主页&#xff1a;https://codeshellme.github.io任何一个人都会写出能够让机器理解的代码&#xff0c;只有好的程序员才能写出人类可以理解的代码。 —— Martin Fowler 1&#xff0c;什么是变量计算机的本质是处理数据&#xff0c;数…

鸿蒙系统手机9月11日,鸿蒙系统9月11日,将有望正式成为国际第三大手机操作生态系统...

原标题&#xff1a;鸿蒙系统9月11日&#xff0c;将有望正式成为国际第三大手机操作生态系统众所周知&#xff0c;当时华为鸿蒙系统还处于1.0版本的时候&#xff0c;这项技术就已经被运用到了荣耀智能屏上&#xff0c;目前该系统也已经过渡到了华为的手表上&#xff0c;经过这一…

lisp 所在图幅号计算_地图标准分幅与编号计算(二)新图幅号

新图幅号1991年制订了新的《国家基本比例尺地形图分幅和编号》(GB/T 13989-92 )的国家标准&#xff0c;并给出了不同标准比例尺地形图的编给规范及图式。新测和更新的地图&#xff0c;照此标准进行分幅和编号。我国基本比例尺的地形图包括1:5000、1:1万、1:2.5万、1:5万、1:10万…

高德地图画带箭头的线_现代汽车把艺术展览搬到线上,邀您逛全景获奖展

Hyundai Blue Prize 2019获奖展“游戏社会&#xff1a;狼、猞猁和蚁群”(Play societies&#xff1a;wolves, lynx and ants)线上展览正式上线。《游戏社会: 狼、猞猁和蚁群》&#xff0c;以 “信息高速公路上的荒原狼”、“猞猁安全岛”和“蚁群游戏厅” 三段隐喻文本展开展览…

python实训名片管理程序_python3学生名片管理v2.0版

python学生名片管理vv2.0是在1.0的基础上增加部分功能&#xff0c;实现将数据存入文件保存&#xff0c;以便于程序停止后还能再次取到数据。具体实现请看如下部分&#xff1a;card_main.pyimport sysfrom One.card_func2 import *def head():print(* * 30)print(学生信息管理系…

ssm 项目cannot resolve package_前端工程化之创建项目

前言在我们团队&#xff0c;刚开始创建项目&#xff0c;是直接使用框架的 cli 进行创建项目&#xff0c;并修改相关配置。随着项目的增多&#xff0c;沉淀了两套模板&#xff0c;平台端及移动端。后来&#xff0c;我们自己写了一个简单的 cli&#xff0c;并提供了 create 及 li…

android_secure写权限,android.permission.WRITE_SECURE_SETTINGS权限报错

在做Android的GPS这一块时&#xff0c;根据原生代码写的Widget&#xff0c;运行时总是会报错说需要android.permission.WRITE_SECURE_SETTINGS权限&#xff0c;于是便在Manifest.xml中添加该权限&#xff0c;但是保存时会报错提示该权限仅用于系统的app查看了很多资料都说需要将…

解析mysqlbinlog日志_mysqlbinlog日志分析 日志挖掘 违规操作

案例&#xff1a;客户数据库&#xff0c;某关键配置表被修改&#xff0c;需查找操作记录及和操作时间1&#xff1a;mysqlbinlog读取如果binlog formatstatement 可以直接通过mysqlbinlog查看如果binlog formatrow 需要添加 -vv --base64-outputdecode-rows/usr/local/mysql/bi…

python打印长方形_利用python打印出菱形、三角形以及矩形的方法实例

前言 本文主要给大家介绍了关于利用python打印出菱形、三角形以及矩形的相关内容&#xff0c;分享出来供大家参考学习&#xff0c;话不多说&#xff0c;来一起看看详细的介绍&#xff1a; 实例代码 #coding:utf-8 rows int(raw_input(输入列数&#xff1a; )) i j k 1 #声明…

百度seo排名规则_百度关键词seo优化排名如何上首页

无涯孤客百度关键词seo优化排名快速上首页&#xff0c;是通过使用多种百度算法优化&#xff0c;让网站在搜索引擎上排名更好&#xff0c;我们做百度关键词排名的话&#xff0c;要比市面上绝大公司做的要稳定&#xff0c;也希望各位可以相信我们&#xff0c;我们可以将百度关键词…

数学难题html5小游戏答案,小学数学难题讲解及答案

第一讲速算与巧算例1 计算9&#xff0b;99&#xff0b;999&#xff0b;9999&#xff0b;99999解&#xff1a;在涉及所有数字都是9的计算中&#xff0c;常使用凑整法.例如将999化成1000—1去计算.这是小学数学中常用的一种技巧.9&#xff0b;99&#xff0b;999&#xff0b;9999&…