当前位置:网站首页>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;
}
}
}
}边栏推荐
- Unity3D学习笔记6——GPU实例化(1)
- Save and retrieve strings
- GPS from entry to abandonment (XIV), ionospheric delay
- What is the RDD operator in spark
- UNI-Admin基础框架怎么关闭创建超级管理员入口?
- GPS从入门到放弃(十三)、接收机自主完好性监测(RAIM)
- Sql: stored procedures and triggers - Notes
- npm run dev启动项目报错 document is not defined
- 基于LM317的可调直流电源
- BarcodeX(ActiveX打印控件) v5.3.0.80 免费版使用
猜你喜欢

Microsoft technology empowerment position - February course Preview

make menuconfig出现recipe for target ‘menuconfig‘ failed错误

GPS du début à l'abandon (XIII), surveillance autonome de l'intégrité du récepteur (raim)

微信红包封面小程序源码-后台独立版-带测评积分功能源码

JS method to stop foreach

小满网络模型&http1-http2 &浏览器缓存

GPS从入门到放弃(十五)、DCB差分码偏差
![[Chongqing Guangdong education] Information Literacy of Sichuan Normal University: a new engine for efficiency improvement and lifelong learning reference materials](/img/a5/94bdea3a871db5305ef54e3b304beb.jpg)
[Chongqing Guangdong education] Information Literacy of Sichuan Normal University: a new engine for efficiency improvement and lifelong learning reference materials

PostgreSQL 安装gis插件 CREATE EXTENSION postgis_topology

The golden age of the U.S. technology industry has ended, and there have been constant lamentations about chip sales and 30000 layoffs
随机推荐
Maximum product of three numbers in question 628 of Li Kou
设置状态栏样式Demo
Leetcode topic [array] -118 Yang Hui triangle
Method return value considerations
What a new company needs to practice and pay attention to
AI enterprise multi cloud storage architecture practice | Shenzhen potential technology sharing
bat脚本学习(一)
[sciter]: encapsulate the notification bar component based on sciter
Shell product written examination related
GPS from entry to abandonment (XVII), tropospheric delay
Four data streams of grpc
MariaDB database management system learning (I) installation diagram
[Digital IC manual tearing code] Verilog automatic beverage machine | topic | principle | design | simulation
Search element topic (DFS)
Sparkshuffle process and Mr shuffle process
Efficiency tool +wps check box shows the solution to the sun problem
PostgreSQL modifies the password of the database user
GPS从入门到放弃(十九)、精密星历(sp3格式)
Digital transformation takes the lead to resume production and work, and online and offline full integration rebuilds business logic
美国科技行业结束黄金时代,芯片求售、裁员3万等哀声不断