当前位置:网站首页>Insert sort
Insert sort
2022-07-05 05:08:00 【ximen502_】
The content of the article comes from Data structure Textbook (C Language version )
The textbook explains 4 An insertion sort algorithm , Respectively
1、 Direct insert sort
2、 Binary Insertion Sort
3、2- Path insertion sort
4、 Table insertion sort
There is also a hill sort ( It belongs to insert sort classification )
This article will only 1、2, Two algorithms are practiced and explored , Among them the first 4 The insertion sorting of tables is based on linked lists .1-3 It's based on arrays .
Two algorithms Java The implementation is as follows
/** * Direct insert sort (Straight Insertion Sort) * * Its basic operation is to insert a record into an ordered table , Thus, we can get a new ordered table with one record added . * * Spatial complexity O(1) * Time complexity O(n^2) * * When the number of records to be sorted n When I was very young , This is a good sorting method . however , Usually, the number of records in the sequence to be sorted n * It's big , It is not suitable to use direct insertion sorting . * * @param arr */
void insertSortV1(int[] arr) {
for (int i = 1; i < arr.length; i++) {
if (arr[i] <= arr[i - 1]) {
int temp = arr[i];
arr[i] = arr[i - 1];
int j;
for (j = i - 2; j >= 0 && temp <= arr[j]; j--) {
arr[j + 1] = arr[j]; // Record back
}
arr[j + 1] = temp; // Insert in the correct position
}
}
}// insertSortV1
/** * Binary Insertion Sort (Binary Insertion Sort) * * Because the basic operation of insert sort is to search and insert in an ordered table , Then this " Search operation " You can use " Binary search " To achieve * , The insertion sort thus performed is called a half insertion sort . * * The complexity of half insert sort space is still O(1) * Compare... In terms of time , Half insertion sorting only reduces the number of keyword comparisons , The number of moves recorded remains the same . therefore * The time complexity is still 0 O(n^2) * * @param arr */
void BInsertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int temp = arr[i];
int low = 0;
int high = i - 1;
while (low <= high) {
int m = (low + high) / 2;
if (temp <= arr[m]) {
high = m - 1;
} else {
low = m + 1;
}
} // while
for (int j = i - 1; j >= high + 1; j--) {
arr[j + 1] = arr[j];
}
arr[high + 1] = temp;
}
}// BInsertSort
@Test
public void fun1() {
int[] arr = {
49, 38, 65, 97, 76, 13, 27, 49 };
// insertSortV1(arr);
BInsertSort(arr);
System.out.println(Arrays.toString(arr));
}
this 2 The space complexity of the implementation of the insertion sort algorithm is O(1), Time complexity is O( n 2 n^2 n2). Half insertion sorting only reduces the number of element comparisons , The number of moves recorded remains the same .
边栏推荐
- Download and use of font icons
- Research and investment forecast report of adamantane industry in China (2022 Edition)
- An article takes you to thoroughly understand descriptors
- Recherche de mots pour leetcode (solution rétrospective)
- Leetcode word search (backtracking method)
- Vs2015 secret key
- [leetcode] integer inversion [7]
- Cocos2dx Lua registers the touch event and detects whether the click coordinates are within the specified area
- AutoCAD - graphic input and output
- The difference between heap and stack
猜你喜欢

Ue4/ue5 illusory engine, material part (III), material optimization at different distances

嵌入式数据库开发编程(六)——C API

Redis has four methods for checking big keys, which are necessary for optimization

AutoCAD - continuous annotation

LeetCode之單詞搜索(回溯法求解)

小程序直播+電商,想做新零售電商就用它吧!

AutoCAD - feature matching

Ue4/ue5 illusory engine, material chapter, texture, compression and memory compression and memory

3dsmax snaps to frozen objects

AutoCAD - workspace settings
随机推荐
Embedded database development programming (VI) -- C API
Unity intelligent NPC production -- pre judgment walking (method 1)
Cocos create Jiugongge pictures
3dsmax2018 common operations and some shortcut keys of editable polygons
China needle coke industry development research and investment value report (2022 Edition)
UE fantasy engine, project structure
使用命令符关闭笔记本自带键盘命令
Unity get component
An article takes you to thoroughly understand descriptors
C iterator
Kali 2018 full image download
mysql审计日志归档
Time format conversion
Embedded database development programming (V) -- DQL
Transport connection management of TCP
[leetcode] integer inversion [7]
A complete attack chain
嵌入式数据库开发编程(零)
Sixth note
Research on the value of background repeat of background tiling