插入排序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语言中经典的排序方式,选择排序 冒泡排序 桶排序,此文就写 插入排序吧. 相对于冒泡排序,插入排序就比较方便快捷了.和冒泡 选择排序一样,插入排序也需要比较大小.可以这样理解插 ...
随机推荐
- 0源码基础学习Spring源码系列(一)——Bean注入流程
作者:京东科技 韩国凯 通过本文,读者可以0源码基础的初步学习spring源码,并能够举一反三从此进入源码世界的大米! 由于是第一次阅读源码,文章之中难免存在一些问题,还望包涵指正! 一. @Auto ...
- JAVA虚拟机22-原子性、可见性与有序性、先行发生原则
1 简介 Java内存模型是围绕着在并发过程中如何处理原子性.可见性和有序性这三个特征来建立的,我们逐个来看一下哪些操作实现了这三个特性 2 原子性 2.1 操作指令 由Java内存模型来直接保证 ...
- 使用springboot cache + redis缓存时使用gzip压缩以提升性能
背景 在高并发的场景中,我们通常会使用缓存提升性能.在使用springboot cache时,我们通常会使用基于JSON的序列化与反序列化. JSON具有可读性强,结构简单的特点,使用灵活. 但是JS ...
- MVC3三层架构
以上部分来自黑马
- 【SDOI2015】寻宝游戏
代码 (树链剖分) #include<cstdio> #include<set> using namespace std; typedef long long LL; cons ...
- .Net NPOI 简单Demo,一看就会
#region 文件输出 public class BasicInfodsa { public string name; public string phone; } List zyData = ...
- CF818G - Four Melody
题意:对于一个序列,令一个 \(melody\) 为一个子序列满足子序列的相邻两项相差 \(1\) 或者模 \(7\) 同余.现在提取四个不重合的 \(melody\),求最长总长度. 我们先考虑暴力 ...
- Angular UI库
1.angular 使用 bootstrap 安装bootstrap npm install bootstrap --save 安装bootstrap-icons npm i bootstrap-ic ...
- java如何将逗号分隔的字符串转成int或者long数组
String str = "1,2,3";//先将他转化成int的数组如上述:欲将str 转成 数值型数组 利用 split 函数先以 ,分割 String str = " ...
- Mysql数据库基础第四章DDL(数据定义语言):库表的管理、数据类型与约束条件
Mysql数据库基础系列 软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9 mysql数据库基础第一章:(一)数据库基本概念 mysql数据库基础第一章:(二)mysql环境搭建 mys ...