当前位置:网站首页>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 .
边栏推荐
猜你喜欢

Unity check whether the two objects have obstacles by ray

Embedded database development programming (VI) -- C API

Autocad-- Real Time zoom

Panel panel of UI

AutoCAD - workspace settings

AutoCAD - Document Management

Research on the value of background repeat of background tiling

AutoCAD - lengthening

UE4/UE5 虚幻引擎,材质篇,纹理,Compression and Memory压缩和内存

十年不用一次的JVM调用
随机推荐
MySQL audit log Archive
2022/7/2 question summary
Unity sends messages and blocks indecent words
django连接数据库报错,这是什么原因
China polyurethane rigid foam Market Research and investment forecast report (2022 Edition)
Unity synergy
[LeetCode] 整数反转【7】
【Leetcode】1352. Product of the last K numbers
JVM call not used once in ten years
中国AS树脂市场调研与投资预测报告(2022版)
Autocad-- Real Time zoom
PostgreSQL 超越 MySQL,“世界上最好的编程语言”薪水偏低
Research on the value of background repeat of background tiling
Use assimp library to read MTL file data
Basic knowledge points of dictionary
Judge the position of the monster in the role under unity3d
Unity shot tracking object
中国溶聚丁苯橡胶(SSBR)行业研究与预测报告(2022版)
mysql審計日志歸檔
Unity enables mobile phone vibration