当前位置:网站首页>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 .
边栏推荐
- Understand encodefloatrgba and decodefloatrgba
- Unity enables mobile phone vibration
- Use the command character to close the keyboard command of the notebook
- Recherche de mots pour leetcode (solution rétrospective)
- Transport connection management of TCP
- 十年不用一次的JVM调用
- China polyurethane rigid foam Market Research and investment forecast report (2022 Edition)
- Common technologies of unity
- Data is stored in the form of table
- MySQL audit log archiving
猜你喜欢

Autocad-- dynamic zoom

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

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

Grail layout and double wing layout

Use of snippets in vscode (code template)

Unity find the coordinates of a point on the circle

Redis 排查大 key 的4种方法,优化必备

54. 螺旋矩阵 & 59. 螺旋矩阵 II ●●

2022/7/2 question summary
![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]
随机推荐
[leetcode] integer inversion [7]
Lua determines whether the current time is the time of the day
Ue4/ue5 illusory engine, material chapter, texture, compression and memory compression and memory
cocos2dx_ Lua particle system
cocos_ Lua listview loads too much data
django连接数据库报错,这是什么原因
win10虚拟机集群优化方案
Out and ref functions of unity
Lua wechat avatar URL
Use of snippets in vscode (code template)
小程序直播+電商,想做新零售電商就用它吧!
Unity sends messages and blocks indecent words
2022/7/1学习总结
Time format conversion
嵌入式数据库开发编程(零)
mysql審計日志歸檔
Animation
Page countdown
cocos2dx_ Lua card flip
AutoCAD - full screen display