插入排序C语言
1 #include "stdio.h"
2 #include "stdlib.h"
3 typedef int ElemType;
4 //直接插入排序
5 void InsertSort(ElemType A[], int n) {
6 int i, j;
7 for (i =2; i <= n; i++) {
8 A[0] = A[i];
9 j = i - 1;
10 while (A[0] < A[j]) {
11 A[j+1] = A[j];
12 j = j - 1;
13 }
14 A[j + 1] = A[0];
15 }
16 }
17 //折半插入排序
18 void BinSort(ElemType A[], int n) {
19 int i, j, low, high, mid;
20 for (i = 2; i <= n; i++) {
21 A[0] = A[i];
22 low = 1;
23 high = i - 1;
24 while (low <= high) {
25 mid = (low + high) / 2;
26 if (A[mid] > A[0])
27 high = mid - 1;
28 else
29 low = mid + 1;
30 }
31 for (j = i - 1; j >= high + 1; --j)
32 A[j + 1] = A[j];
33 A[high + 1] = A[0];//A[low]=A[0];
34 }
35 }
36 //希尔排序
37 void ShellInsert(ElemType A[], int n,int delta) {
38 int i, j;
39 for(i=1+delta;i<=n;i++)
40 if (A[i] < A[i - delta]) {
41 A[0] = A[i];
42 for (j = i - delta; j > 0 && A[0] < A[j]; j -= delta)
43 A[j + delta] = A[j];
44 A[j + delta] = A[0];
45 }
46 }
47 void ShellSort(ElemType A[], int n, int delta[], int dn) {
48 int i, j;
49 for (i = 0; i <= n - 1; ++i)
50 ShellInsert(A, n, delta[i]);
51 }
52 //希尔建议希尔排序
53 void ShellSort(ElemType A[], int n) {
54 int dk,i,j;
55 for(dk=n/2;dk>=1;dk=dk/2)
56 for (i = dk + 1; i <= n; ++i) {
57 if (A[i] < A[i - dk]) {
58 A[0] = A[i];
59 for (j = i - dk; j > 0 && A[0] < A[j]; j -= dk)
60 A[j + dk] = A[j];
61 A[j + dk] = A[0];
62 }
63 }
64 }
插入排序C语言的更多相关文章
- 插入排序_C语言_数组
插入排序_C语言_数组 #include <stdio.h> void insertSort(int *); int main(int argc, const char * argv[]) ...
- 插入排序——C语言
插入排序 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. (每步将一个待 ...
- 插入排序C语言版本
算法思路: 每趟将一个待排序的元素作为关键字,按照其关键字值的大小插入到已经排好的部分的适当位置上,直到插入完成. 数组中待排序的关键字前面的数据为已经排序的数据,关键字插 ...
- 希尔排序——C语言
希尔排序 希尔排序是插入排序的一种,又称“缩小增量排序”,希尔排序是直接插入排序算法的一种更高效的改进版本,关于插入排序可以看下这篇随笔:插入排序——C语言 (图片来源:https://www.cnb ...
- 2-路插入排序(2-way Insertion Sort)的C语言实现
原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia 2-路插入排序(2-way Insertion Sort)的基本思想: 比fis ...
- 折半插入排序(Binary Insertion Sort)的C语言实现
原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia 折半插入排序(Binary Insertion Sort)的基本思想是将新记录插入到已经 ...
- 直接插入排序(Straight Insertion Sort)的C语言实现
原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia 直接插入排序(Straight Insertion Sort)的基本思想是将新记录插入到 ...
- 数据结构C语言版 表插入排序 静态表
数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./* 数据结构C语言版 表插入排序 算法10.3 P267-P270 编译 ...
- 深入浅出数据结构C语言版(16)——插入排序
从这一篇博文开始,我们将开始讨论排序算法.所谓排序算法,就是将给定数据根据关键字进行排序,最终实现数据依照关键字从小到大或从大到小的顺序存储.而这篇博文,就是要介绍一种简单的排序算法--插入排序(In ...
- C语言学习之插入排序
此前的一些博文分别写了C语言中经典的排序方式,选择排序 冒泡排序 桶排序,此文就写 插入排序吧. 相对于冒泡排序,插入排序就比较方便快捷了.和冒泡 选择排序一样,插入排序也需要比较大小.可以这样理解插 ...
随机推荐
- springboot 多数据源 实例(sybase、mysql数据库)(上)
最近项目 需要用到 sybase(sql anywhere).mysql 数据库 两边数据交互 .由于之前对sybase 数据库一点不懂 踩了许多坑 特意记下: 连接 sybase 客户端需要用到 S ...
- spring cloud alibaba - Nacos 下载安装
1.关于名字 前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service 2.是什么 一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心.是注册中心和配 ...
- 云萌 V2.6.3.0 win10,win11 Windows永久激活工具
Windows如果一直不激活,其实用起来问题也不大,除了无法修改壁纸.颜色.锁屏.主题以及无法使用微软账号的同步功能等之外,绝大多数的基本功能都可以正常使用.不过该激活还是得激活的.别的不说,就桌面右 ...
- WAVE音频文件格式及其64位扩展格式的简要介绍
正文 关于 WAVE 文件格式,网上有不少介绍,但关于WAVE 64位扩展格式的介绍却是几乎没有. 所以本文的目的是简要介绍标准的 WAVE 格式,以及两种主要的扩展格式. 文中所有代码都用C语言来描 ...
- JZOJ 7339.改试卷
\(\text{Solution}\) 又忘了线段树分治!! 显然维护一个上凸包 发现加点和删点可以变成限制存在时间 然后把点放在线段树上,线段树下标表示时间 加点时先把点按横坐标排序,然后就可以单调 ...
- Oracle中表字段加中文注释,应该怎么写呢?
首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...
- 慧销平台ThreadPoolExecutor内存泄漏分析
作者:京东零售 冯晓涛 问题背景 京东生旅平台慧销系统,作为平台系统对接了多条业务线,主要进行各个业务线广告,召回等活动相关内容与能力管理. 最近根据告警发现内存持续升高,每隔2-3天会收到内存超过阈 ...
- Postgresql 定制执行计划pg_hint_plan
一.概述 Plan Hint是PG社区官方版"永远"不考虑引入的功能之一,社区开发者的理念是,引入Hint功能,会掩盖优化器本身的问题,导致缺陷不被暴露出来.但对于使用者来讲,遇到 ...
- LeetCode-398 随机数索引
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/random-pick-index 题目描述 给定一个可能含有重复元素的整数数组,要求随机输出给定 ...
- gmlib密码算法库
gmlib密码算法库 一.gmlib密码算法库简介 支持国密 SM4/AES-ECB/CBC/GCM,SM3,SM2签名/加密,ZUC算法 的密码库,文档页面GMLib Docs ,项目地址 gmli ...