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语言的更多相关文章

  1. 插入排序_C语言_数组

    插入排序_C语言_数组 #include <stdio.h> void insertSort(int *); int main(int argc, const char * argv[]) ...

  2. 插入排序——C语言

    插入排序 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.  (每步将一个待 ...

  3. 插入排序C语言版本

    算法思路:        每趟将一个待排序的元素作为关键字,按照其关键字值的大小插入到已经排好的部分的适当位置上,直到插入完成.        数组中待排序的关键字前面的数据为已经排序的数据,关键字插 ...

  4. 希尔排序——C语言

    希尔排序 希尔排序是插入排序的一种,又称“缩小增量排序”,希尔排序是直接插入排序算法的一种更高效的改进版本,关于插入排序可以看下这篇随笔:插入排序——C语言 (图片来源:https://www.cnb ...

  5. 2-路插入排序(2-way Insertion Sort)的C语言实现

    原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia   2-路插入排序(2-way Insertion Sort)的基本思想:     比fis ...

  6. 折半插入排序(Binary Insertion Sort)的C语言实现

    原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia   折半插入排序(Binary Insertion Sort)的基本思想是将新记录插入到已经 ...

  7. 直接插入排序(Straight Insertion Sort)的C语言实现

    原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia   直接插入排序(Straight Insertion Sort)的基本思想是将新记录插入到 ...

  8. 数据结构C语言版 表插入排序 静态表

    数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./*  数据结构C语言版 表插入排序  算法10.3 P267-P270  编译 ...

  9. 深入浅出数据结构C语言版(16)——插入排序

    从这一篇博文开始,我们将开始讨论排序算法.所谓排序算法,就是将给定数据根据关键字进行排序,最终实现数据依照关键字从小到大或从大到小的顺序存储.而这篇博文,就是要介绍一种简单的排序算法--插入排序(In ...

  10. C语言学习之插入排序

    此前的一些博文分别写了C语言中经典的排序方式,选择排序 冒泡排序 桶排序,此文就写 插入排序吧. 相对于冒泡排序,插入排序就比较方便快捷了.和冒泡 选择排序一样,插入排序也需要比较大小.可以这样理解插 ...

随机推荐

  1. Vue30 过度与动画

    1 简介 Vue封装的过度与动画,插入.更新或者移除 DOM 时,在合适的时候给元素添加样式类名,达到应用过渡和动画效果. 2 vue内置的样式 Vue在元素显示与隐藏的过渡中,提供了 6 个 cla ...

  2. .Net Core后端架构实战【1-项目分层框架设计】

    摘要:基于.NET Core 7.0WebApi后端架构实战[1-项目结构分层设计]  2023/02/05, ASP.NET Core 7.0, VS2022 引言 从实习到现在回想自己已经入行四年 ...

  3. 机器学习-集成学习LightGBM

    目录 前言 介绍LightGBM LightGBM的背景和起源 LightGBM的优点和适用场景 LightGBM的基本工作原理 安装和配置LightGBM 安装LightGBM 配置LightGBM ...

  4. 如何基于IM即时通讯SDK从零开发仿微信聊天交友功能

    IM即时通讯技术的发展 IM即时通讯(Instant Messaging)是一种基于互联网的即时交流消息的业务. 实时聊天交互功能是市面上主流APP的重要功能之一,人们所熟悉的就是微信,QQ的聊天消息 ...

  5. 依那西普治疗多关节型和系统型JRA的长期疗效[EULAR2007_SAT0397]

    依那西普治疗多关节型和系统型JRA的长期疗效 Giannini EH, Ilowite NT. EULAR2007. Abstract No:SAT0397. 标签: EULAR2007,EULAR文 ...

  6. H5与原生APP调了交互方式

    APP中不支持position:fixed; 改成 position:absolute; 触发H5按钮跳转APP原生页,进入调取APP的名传自己的方法 <a href="javascr ...

  7. 03#Web 实战:实现下拉菜单

    实现过程 实现一个简易的鼠标悬停菜单项显示其子项的下拉框控件.将用到 CSS 绝对定位.流式布局.动画等:JQuery 鼠标移入和移出事件.DOM 查找.效果图如下: HTML 结构: <div ...

  8. 数据类型之字符串(string)(一)

    1.引号括起的都是字符串(可以时空格),可以是''(单引号).""(双引号).''''''(三引号).""""""(我还 ...

  9. JavaScrip核心基础(讲师李立超)

    01_入门 01_HelloWorld <!-- JS代码需要编写到script中 --> <script> alert("哈哈哈哈") console.l ...

  10. docker swarm集群安装使用

    1.安装master docker swarm init --advertise-addr 10.98.10.186 Swarm initialized: current node (qemrm3oq ...