当前位置:网站首页>Insert sort and Hill sort
Insert sort and Hill sort
2022-07-06 22:05:00 【Hou Jiashu】
Insertion sort
Insert an element into the sorted array
You can think of the first element of an unordered array as An ordered array with only one element
Then insert the elements in the array one by one into the appropriate position in the ordered array
When all elements are inserted into an ordered array , This array has been set to order
Dynamic diagram demonstration

The code logic is as follows :
Take ascending order
Pass the inserted element through tmp preservation
hypothesis At this time, there are i+1 Elements
The last element of the ordered array ( Largest element ) The subscript , Write it down as end
adopt end Traversal array , Find out the appropriate position for element insertion
int end = i;
int tmp = a[end + 1];
while (end >= 0)
{
if (a[end] > tmp)
{
a[end + 1] = a[end];
end--;
}
else
{
break;
}
}
a[end + 1] = tmp;take tmp And a[end] Compare ,
When a[end] > tmp when , take a[end] Move back one position , after end--
Then with tmp Compare , Until you find the right place
Two cases of suitable location
1. tmp > end
2.tmp Less than all elements in the array
When you find the right place , The cycle ends , Store the data in the right place (end + 1)
This is the step of inserting an element into an ordered array
Yes n Inserting and sorting an array of elements can be understood as
Insert... Into an ordered array containing one element n-1 Elements
When converted into code, it is
// Insertion sort
void InsertSort(int* a, int n)
{
int i = 0;
for(i=0;i<n-1;i++)
{
int end = i;
int tmp = a[end + 1];
while (end >= 0)
{
if (a[end] > tmp)
{
a[end + 1] = a[end];
end--;
}
else
{
break;
}
}
a[end + 1] = tmp;
}
}The time complexity is O(N^2)
Shell Sort
Hill sort is an advanced sort of insert sort , Greatly optimize the efficiency of the insertion sort algorithm
Basic idea and code analysis implementation
Suppose the array has N Elements
Take one less than N The positive integer gap
Set the distance in the array to gap The elements of are divided into a group
Be careful : The elements between the groups do not coincide , When taking elements , The first group is marked below 0 The element of is the first element
The second type is marked as 1 The element of is the second element
......
Insert and sort each group of elements
int j = 0;
// Sort each group of elements
for (j = 0; j < gap; j++)
{
int i = 0;
// Sort a set of elements
for (i = j; i < n - gap; i += gap)
{
int end = i;
int tmp = a[end + gap];
while (end >= 0)
{
if (a[end] > tmp)
{
a[end + gap] = a[end];
end -= gap;
}
else
{
break;
}
}
a[end + gap] = tmp;
}
}After the gap Reduce and repeat the above steps
Take ascending order as an example
When gap > 1 when
This process is called pre sorting , In order to facilitate better and faster insertion sorting
gap The bigger it is , Large elements will reach the rear faster , Small elements move faster to the front
gap The smaller it is , The closer the data is to order
When gap == 1 when
Sort for insertion
in summary
void ShellSort(int* a, int n)
{
// according to gap Do the nesting
int gap = n;
while (gap > 1)
{
gap = gap / 3 + 1;
int j = 0;
for (j = 0; j < gap; j++)
{
int i = j;
for (i = 0; i < n - gap; i += gap)
{
int end = i;
int tmp = a[end + gap];
while (end >= 0)
{
if (a[end] > tmp)
{
a[end + gap] = a[end];
end -= gap;
}
else
{
break;
}
}
a[end + gap] = tmp;
}
}
}
}边栏推荐
- AI enterprise multi cloud storage architecture practice | Shenzhen potential technology sharing
- GPS从入门到放弃(二十)、天线偏移
- 11、 Service introduction and port
- NPM run dev start project error document is not defined
- [Yu Yue education] reference materials for surgical skills teaching in Tongji University
- [10:00 public class]: basis and practice of video quality evaluation
- 搜素专题(DFS )
- Codeforces Round #274 (Div. 2) –A Expression
- GPS from getting started to giving up (XV), DCB differential code deviation
- MongoDB(三)——CRUD
猜你喜欢
![[asp.net core] set the format of Web API response data -- formatfilter feature](/img/95/b7e7b5e9e9ac1d9295c17640beccb3.jpg)
[asp.net core] set the format of Web API response data -- formatfilter feature

数字化转型挂帅复产复工,线上线下全融合重建商业逻辑
![[Chongqing Guangdong education] Tianjin urban construction university concrete structure design principle a reference](/img/61/976c7d86ab3b2df5f5af3beefbf547.png)
[Chongqing Guangdong education] Tianjin urban construction university concrete structure design principle a reference

ViT论文详解

JS method to stop foreach
![[daily] win10 system setting computer never sleeps](/img/94/15f5a368e395b6948f409c5f6fc871.jpg)
[daily] win10 system setting computer never sleeps

How does the uni admin basic framework close the creation of super administrator entries?
![Some problems about the use of char[] array assignment through scanf..](/img/cf/d85a3172c5d29ac00377f9c30dbc4f.png)
Some problems about the use of char[] array assignment through scanf..

Vit paper details

UNI-Admin基础框架怎么关闭创建超级管理员入口?
随机推荐
GPS from getting started to giving up (XI), differential GPS
AI 企业多云存储架构实践 | 深势科技分享
BarcodeX(ActiveX打印控件) v5.3.0.80 免费版使用
Codeforces Round #274 (Div. 2) –A Expression
Univariate cubic equation - relationship between root and coefficient
基于InsightFace的高精度人脸识别,可直接对标虹软
MySQL removes duplicates according to two fields
Mysql相关术语
GPS从入门到放弃(十二)、 多普勒定速
Aggregate function with key in spark
Basic introduction of figure
Sql: stored procedures and triggers - Notes
【sdx62】WCN685X将bdwlan.bin和bdwlan.txt相互转化操作方法
[Chongqing Guangdong education] Tianjin urban construction university concrete structure design principle a reference
设置状态栏样式Demo
string的底层实现
UNI-Admin基础框架怎么关闭创建超级管理员入口?
GPS从入门到放弃(十六)、卫星时钟误差和卫星星历误差
20 large visual screens that are highly praised by the boss, with source code templates!
GPS from getting started to giving up (XVIII), multipath effect