🪙
Leetcode
  • Content
  • Algorithms
    • Linear Search
    • Binary Search
    • Counting Sort
    • Merge Sort
    • Insertion Sort
    • Selection Sort
  • Array and String
    • Introduction to Array
      • Introduction to Array
      • Introduction to Dynamic Array
      • Find Pivot Index
      • Largest Number At Least Twice of Others
      • Plus One
    • Introduction to 2D Array
      • Introduction to 2D Array
      • Diagonal Traverse
      • Spiral Matrix
      • Pascal's Triangle
    • Introduction to String
      • Introduction to String
      • Immutable String - Problems & Solutions
      • Add binary
      • Implement strStr()
      • Longest Common Prefix
    • Two-Pointer Technique
      • Two-pointer Technique - Scenario I
      • Reverse String
      • Array Partition I
      • Two Sum II - Input array is sorted
      • Two-pointer Technique - Scenario II
      • Remove Element
      • Max Consecutive Ones
      • Minimum Size Subarray Sum
    • Conclusion
      • Array-related Techniques
      • Rotate Array
      • Pascal's Triangle II
      • Reverse Words in a String
      • Reverse Words in a String III
      • Remove Duplicates from Sorted Array
      • Move Zeroes
  • Linked List
    • Singly Linked List
      • Introduction - Singly Linked List
      • Add Operation - Singly Linked List
      • Delete Operation - Singly Linked List
      • Design Linked List
    • Two Pointer Technique
      • Two-Pointer in Linked List
      • Linked List Cycle
      • Linked List Cycle II
      • Intersection of Two Linked Lists
      • Remove Nth Node From End of List
      • Summary - Two-Pointer in Linked List
  • Problems
    • 1. Two Sum
    • 2. Add Two Numbers
    • 7. Reverse Integer
    • 9. Palindrome Number
    • 11. Container With Most Water
    • 12. Integer to Roman
    • 13. Roman to Integer
    • 14. Longest Common Prefix
    • 15. 3Sum
    • 21. Merge Two Sorted Lists
    • 26. Remove Duplicates from Sorted Array
    • 27. Remove Element
    • 28. Find the Index of the First Occurrence in a String
    • 34. Find First and Last Position of Element in Sorted Array
    • 35. Search Insert Position
    • 43. Multiply Strings
    • 49. Group Anagrams
    • 50. Pow(x, n)
    • 54. Spiral Matrix
    • 58. Length of Last Word
    • 66. Plus One
    • 67. Add Binary
    • 69. Sqrt(x)
    • 73. Set Matrix Zeroes
    • 75. Sort Colors
    • 88. Merge Sorted Array
    • 104. Maximum Depth of Binary Tree
    • 121. Best Time to Buy and Sell Stock
    • 122. Best Time to Buy and Sell Stock II
    • 136. Single Number
    • 146. LRU Cache
    • 189. Rotate Array
    • 206. Reverse Linked List
    • 217. Contains Duplicate
    • 219. Cotains Duplicate II
    • 226. Invert Binary Tree
    • 238. Product of Array Except Self
    • 242. Valid Anagram
    • 268. Missing Number
    • 283. Move Zeroes
    • 350. Intersection of Two Arrays II
    • 383. Ransom Note
    • 389. Find the Difference
    • 412. Fizz Buzz
    • 414. Third Maximum Number
    • 445. Add Two Numbers II
    • 448. Find All Numbers Disappeared in an Array
    • 459. Repeated Substring Pattern
    • 485. Max Consecutive Ones
    • 509. Fibonacci Number
    • 637. Average of Levels in Binary Tree
    • 657. Robot Return to Origin
    • 682. Baseball Game
    • 704. Binary Search
    • 705. Design HashSet
    • 709. To Lower Case
    • 724. Find Pivot Index
    • 876. Middle of the Linked List
    • 896. Monotonic Array
    • 860. Lemonade Change
    • 905. Sort Array By Parity
    • 916. Word Subsets
    • 941. Valid Mountain Array
    • 976. Largest Perimeter Triangle
    • 977. Squares of a Sorted Array
    • 1041. Robot Bounded In Circle
    • 1051. Height Checker
    • 1089. Duplicate Zeros
    • 1232. Check If It Is a Straight Line
    • 1275. Find Winner on a Tic Tac Toe Game
    • 1295. Find Numbers with Even Number of Digits
    • 1299. Replace Elements with Greatest Element on Right Side
    • 1342. Number of Steps to Reduce a Number to Zero
    • 1346. Check If N and Its Double Exist
    • 1476. Subrectangle Queries
    • 1480. Running Sum of 1d Array
    • 1491. Average Salary Excluding the Minimum and Maximum Salary
    • 1502. Can Make Arithmetic Progression From Sequence
    • 1523. Count Odd Numbers in an Interval Range
    • 1572. Matrix Diagonal Sum
    • 1672. Richest Customer Wealth
    • 1768. Merge Strings Alternately
    • 1752. Check if Array Is Sorted and Rotated
    • 1769. Minimum Number of Operations to Move All Balls to Each Box
    • 1790. Check if One String Swap Can Make Strings Equal
    • 1800. Maximum Ascending Subarray Sum
    • 1822. Sign of the Product of an Array
    • 1930. Unique Length-3 Palindromic Subsequences
    • 1991. Find the Middle Index in Array
    • 2185. Counting Words With a Given Prefix
    • 2235. Add Two Integers
    • 2236. Root Equals Sum of Children
    • 2270. Number of Ways to Split Array
    • 2381. Shifting Letters II
    • 2559. Count Vowel Strings in Ranges
    • 2610. Convert an Array Into a 2D Array With Conditions
    • 2657. Find the Prefix Common Array of Two Arrays
    • 3042. Count Prefix and Suffix Pairs I
    • 3105. Longest Strictly Increasing or Strictly Decreasing Subarray
    • 3151. Special Array I
    • 3223. Minimum Length of String After Operations
Powered by GitBook
On this page
  • What is Insertion Sort?
  • Insertion Sort Algorithm
  • How does Insertion Sort Algorithm work?
  • Implementation of Insertion Sort Algorithm
  • Complexity Analysis of Insertion Sort
  • Characteristics of Insertion Sort
  • When to use Insertion Sort?

Was this helpful?

Edit on GitHub
  1. Algorithms

Insertion Sort

What is Insertion Sort?

Insertion Sort - bu oddiy tartiblash algoritmi bo'lib, u sizning qo'lingizda o'yin kartalarini saralash usuliga o'xshash ishlaydi. Massiv deyarli tartiblangan va tartiblanmagan qismga bo'lingan. Saralanmagan qismdan qiymatlar tanlanadi va tartiblangan qismning to'g'ri joyiga joylashtiriladi.

Insertion Sort Algorithm

N o'lchamli massivni o'sish tartibida saralash uchun massiv bo'ylab takrorlang va joriy elementni (kalit) o'zidan oldingi bilan solishtiring, agar asosiy element avvalgisidan kichik bo'lsa, uni oldingi elementlar bilan solishtiring. Almashtirilgan element uchun joy ochish uchun kattaroq elementlarni bir pozitsiya yuqoriga siljiting.

How does Insertion Sort Algorithm work?

  • Consider an example: arr[]: {12, 11, 13, 5, 6}

  • Dastlab, massivning dastlabki ikki elementi kiritish tartibida solishtiriladi.

Step-1

12

11

13

5

6

  • Bu yyerda 12 11 dan katta, shuning uchun ular o'sish tartibida emas va 12 o'zining to'g'ri joyida emas. Shunday qilib, 11 va 12 ni almashtiring.

  • Shunday qilib, hozircha 11 tartiblangan pastki qatorda saqlanadi.

Step-2

  • Endi keyingi ikkita elementga o'ting va ularni solishtiring

11

12

13

5

6

  • Bu yerda 13 12 dan katta, shuning uchun ikkala element ham o'sish tartibida ko'rinadi, shuning uchun almashtirish sodir bo'lmaydi. 12, shuningdek, 11 bilan birga tartiblangan pastki qatorda saqlanadi

Step-3

  • Endi tartiblangan kichik massivda ikkita element mavjud, ular 11 va 12

  • Keyingi ikkita elementga o'tish - 13 va 5

11

12

13

5

6

  • 5 va 13 ikkalasi ham o'z joyida yo'q, shuning uchun ularni almashtiring

11

12

5

13

6

  • Almashtirilgandan so'ng, 12 va 5 elementlar tartiblanmaydi, shuning uchun yana almashtiriladi

11

5

12

13

6

  • Bu yerda yana 11 va 5 tartiblashtirilmaydi, shuning uchun yana almashtiring

5

11

12

13

6

  • Bu yerda 5 to'g'ri holatda

Step-4

  • Endi tartiblangan kichik massivda mavjud bo'lgan elementlar 5, 11 va 12 dir

  • Keyingi ikkita elementga o'tish 13 va 6

5

11

12

13

6

  • Shubhasiz, ular tartiblanmagan, shuning uchun ikkalasini almashtirishni amalga oshiring

5

11

12

6

13

  • Endi 6 12 dan kichik, shuning uchun yana almashtiring

5

11

6

12

13

  • Bu erda, shuningdek, almashtirish 11 va 6 ni tartibsiz qiladi, shuning uchun yana almashtiring

5

6

11

12

13

  • Nihoyat, massiv to'liq tartiblangan.

Implementation of Insertion Sort Algorithm

// Insertion Sort - massivni o'sish tartibida saralash uchun algoritm
// arr - saralash kerak bo'lgan massiv
func insertionSort(arr []int) []int {
    

    for i:=1; i<len(arr); i++{

        // key - saralash kerak bo'lgan element
        key := arr[i]

        // j - key elementdan oldingi element
        j := i - 1

        // key elementdan oldingi elementdan katta bo'lsa
        // va j >= 0 bo'lsa, arr[j] elementni key elementga almashtiriladi
        for j >= 0 && arr[j] > key {

            // key elementdan oldingi elementni key elementga almashtirish
            arr[j+1] = arr[j]
            j -= 1
        }

        // key elementni key elementdan oldingi elementga almashtirish
        arr[j+1] = key
    }

    return arr
}

Kodni ishlatib ko'rish uchun playgrounddan foydalaning.

Complexity Analysis of Insertion Sort

Time Complexity

  • Insertion Sortning eng yomon vaqt murakkabligi O(N^2)

  • Insertion Sortning o'rtacha vaqt murakkabligi O(N^2)

  • Eng yaxshi holatning vaqt murakkabligi O(N) dir.

Space Complexity

  • Insertion Sortning yordamchi space murakkabligi O(1) dir.

Characteristics of Insertion Sort

  • Bu algoritm oddiy amalga oshirish bilan eng oddiy algoritmlardan biridir

  • Asosan, Insertion Sort kichik ma'lumotlar qiymatlari uchun samarali

  • Insertion Sort moslashuvchan, ya'ni qisman saralangan ma'lumotlar to'plamlari uchun mos keladi.

When to use Insertion Sort?

  • Elementlar soni kichik bo'lsa, Insertion Sort qo'llaniladi. Bundan tashqari, kirish massivi deyarli tartiblangan va faqat bir nechta elementlar to'liq katta massivda noto'g'ri joylashtirilganda ham foydali bo'lishi mumkin.

PreviousMerge SortNextSelection Sort

Last updated 1 year ago

Was this helpful?

image

Insertion Sort - () algoritm, shuning uchun, qo'shimcha saqlash uchun joy talab qilmaydi.

Source:

In-Place
GeeksforGeeks