插入排序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语言中经典的排序方式,选择排序 冒泡排序 桶排序,此文就写 插入排序吧. 相对于冒泡排序,插入排序就比较方便快捷了.和冒泡 选择排序一样,插入排序也需要比较大小.可以这样理解插 ...
随机推荐
- java 启动查看jar包加载顺序并设置classpath
本文为博主原创,转载请注明出处: 1.idea查看jar包加载顺序 jdk8 可以通过 -XX:+TraceClassPaths 参数进行查看jar包的加载顺序 jdk11 可以通过 ...
- 安卓逆向HOOK 3.系类HOOK
package xphok; import java.lang.reflect.Method; import java.security.MessageDigest; import java.text ...
- sys.argv的用法
一.Python sys 模块 "sys" 是 "system",是一个系统模块,该模块提供了一些接口,用户访问python解释器自身使用和维护的变量,同时模块 ...
- OpenLayers结合JSTS实现空间运算
1. 引言 空间运算利用几何函数来接收输入的空间数据,对其进行分析,然后生成输出数据,输出数据为针对输入数据执行分析的派生结果. 可从空间运算中获得的派生数据包括: 作为输入要素周围缓冲区的面 作为对 ...
- LeetCode-587 安装栅栏及三种凸包算法的学习
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/erect-the-fence 题目描述 在一个二维的花园中,有一些用 (x, y) 坐标表示的树 ...
- Net6 Core Api(.net6)发布到IIS注意事项及显示HTTP 错误500.19解决方法
Net6 Core Api发布到IIS不同于webapi,依赖框架不同,配置也移至项目内Program.cs 一.发布到指定文件夹,和IIS,不过注意IIS应用程序池选择的是 "无托管代码& ...
- python 排序的几种方式(内置排序函数, 选择排序, 冒泡排序)
#python 排序的方法 #Python 列表有一个内置的 list.sort() 方法可以直接修改列表 list1 = [1,3,5,10,2,1] list1.sort() print(list ...
- orm中多表查询示例
record = session.query(OrderMain, OrderGoods).join(OrderMain, OrderMain.order_code == OrderGoods.ord ...
- .NET 中创建录音机和播放器应用
前言 在本博客中,你将了解如何在 .NET MAUI 中开发录音机和播放器.音频播放器将录制和播放音频文件.此应用程序可以在Android和iOS上部署和使用. 预览 以下是该录音机和播放录音的应用程 ...
- FPGA MIG调试bug(二)
目标器件:复旦微FPGA:JFM7K325T8FCBGA676(对标Xilinx Kintex-7系的XC7K325T) 工程背景:送入FPGA的外部时钟为差分时钟,时钟送入FPGA后,经过PLL输出 ...