当前位置:网站首页>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 .
边栏推荐
- cocos_ Lua loads the file generated by bmfont fnt
- AutoCAD - stretching
- MySQL audit log Archive
- SQLServer 存储过程传递数组参数
- UE4/UE5 虚幻引擎,材质篇,纹理,Compression and Memory压缩和内存
- 2022/7/2做题总结
- LeetCode之单词搜索(回溯法求解)
- Chinese notes of unit particle system particle effect
- [leetcode] integer inversion [7]
- Listview is added and deleted at the index
猜你喜欢

AutoCAD -- dimension break

django连接数据库报错,这是什么原因

3dsmax scanning function point connection drawing connection line

Stm32cubemx (8): RTC and RTC wake-up interrupt

【Leetcode】1352. 最后 K 个数的乘积

Embedded database development programming (VI) -- C API

3dsmax snaps to frozen objects

2022/7/2 question summary

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

Embedded database development programming (zero)
随机推荐
Simple modal box
Rip notes [rip message security authentication, increase of rip interface measurement]
Use the command character to close the keyboard command of the notebook
Redis has four methods for checking big keys, which are necessary for optimization
Judge the position of the monster in the role under unity3d
Optimization scheme of win10 virtual machine cluster
PR first time
Leetcode word search (backtracking method)
Chinese notes of unit particle system particle effect
Unity enables mobile phone vibration
Redis 排查大 key 的4种方法,优化必备
3dsmax2018 common operations and some shortcut keys of editable polygons
Applet Live + e - commerce, si vous voulez être un nouveau e - commerce de détail, utilisez - le!
Panel panel of UI
Recherche de mots pour leetcode (solution rétrospective)
The difference between heap and stack
Lua GBK and UTF8 turn to each other
PostgreSQL 超越 MySQL,“世界上最好的编程语言”薪水偏低
How to choose a panoramic camera that suits you?
C # perspective following