当前位置:网站首页>Shell Sort
Shell Sort
2022-07-05 05:09:00 【ximen502_】
The content of this paper comes from Data structure Textbook (C Language version )
Shell Sort (Shell’s Sort), Also known as reducing incremental sorting (Diminishing Increment Sort), It is also a method of insertion sort , But in terms of time efficiency, it is much better than the previous insertion sorting .
its The basic idea yes : First, divide the whole record sequence to be sorted into several subsequences , separately , Direct insert sort , When the records in the whole sequence are basically in order , Do a direct insertion sort for all records again .
The above picture description is too ambiguous , Hard to understand , The detailed decomposition diagram is as follows :
Sort using increment ( Stepping ) One time for 5, 3, 1, The first round of use 5 For stepping , From the subscript 0 Start backward with the subscript (0+5) Compare the numbers at , Small numbers go forward ( left ), Big numbers go backwards ( On the right side ), Then the subscript is 1 Start , by 2 Start , Step backward in turn until there is no step for 5 The second number of , Then the first round of sorting is completed .
Let's take the first round as an example to analyze in detail :
- First step

- The second step

- The third step

- Step four

- Step five

The above is the detailed process of the first round of sorting , The second round , The third round just changed the step , The basic idea has not changed .
Hill sort algorithm uses Java The implementation is as follows
/** * Specific sorting process * @param arr * @param dk The incremental */
void shellInsert(int[] arr, int dk) {
// An array arr Make a hill insertion sort .
for (int i = dk; i < arr.length; i++) {
if (arr[i] <= arr[i - dk]) {
int temp = arr[i];
int j = 0;
for (j = i - dk; j >= 0 && temp <= arr[j]; j -= dk) {
arr[j + dk] = arr[j];
}
arr[j + dk] = temp;
}
}
}// Shell Insert
void ShellSort(int[] arr, int[] dlta, int t) {
// Sequence by increment dlta[0..t-1] For the sequence table arr Make Hill sort
for (int i = 0; i < t; i++) {
shellInsert(arr, dlta[i]);
}
}
@Test
public void fun1() {
int[] arr = {
49, 38, 65, 97, 76, 13, 27, 49, 55, 04 };
int[] dlta = {
5, 3, 1 };
ShellSort(arr, dlta, dlta.length);
System.out.println(Arrays.toString(arr));
}
The analysis of Hill sort is a complex problem , Because its time is a function of the sequence quantity taken , This involves some unsolved mathematical problems .( The printing time of the textbook 2009 year 2 month , The time of publication is 2007 year , This year, 2019 year , It's about past publication 12 year , I wonder if these mathematical problems have been solved over the years .) The rest is like : Local conclusions drawn from a large number of studies , Taking incremental sequence , Let's read the textbook , There's a lot of content .
边栏推荐
猜你喜欢

AutoCAD -- dimension break

UE fantasy engine, project structure

嵌入式数据库开发编程(五)——DQL

Unity3d learning notes
![Rip notes [rip message security authentication, increase of rip interface measurement]](/img/89/f70af97676496d7b9aa867be89f11d.jpg)
Rip notes [rip message security authentication, increase of rip interface measurement]

"Measuring curve length" of CAD dream drawing
![Rip notes [rip three timers, the role of horizontal segmentation, rip automatic summary, and the role of network]](/img/e7/f699ee982ea325b8d04f8bd467a559.jpg)
Rip notes [rip three timers, the role of horizontal segmentation, rip automatic summary, and the role of network]

How to choose a panoramic camera that suits you?

Unity find the coordinates of a point on the circle

《动手学深度学习》学习笔记
随机推荐
An article takes you to thoroughly understand descriptors
中国AS树脂市场调研与投资预测报告(2022版)
China as resin Market Research and investment forecast report (2022 Edition)
Common technologies of unity
Django reports an error when connecting to the database. What is the reason
Page countdown
MD5绕过
669. Prune binary search tree ●●
UE fantasy engine, project structure
Basic knowledge points of dictionary
AutoCAD - Document Management
Optimization scheme of win10 virtual machine cluster
cocos_ Lua loads the file generated by bmfont fnt
Lua GBK and UTF8 turn to each other
中国针状焦行业发展研究与投资价值报告(2022版)
用 Jmeter 工具做个小型压力测试
【Leetcode】1352. Product of the last K numbers
AutoCAD - Center zoom
Detailed introduction of OSPF header message
嵌入式数据库开发编程(零)