【排序算法】插入排序法 & C++实现 | [实例过程分析]

简介: 插入排序法 & C++实现

●插入排序法


1.简要介绍

插入排序算法代码段:


for (int i = 1; i < len; i++)
  {
  int t = a[i];
  int j = i - 1;
  while (j >= 0 && t < a[j])
  {
    a[j+1] = a[j];
    j--;
  }
  a[j + 1] = t;
  }

2.图形化演示

随机找5个数用插入排序法进行从小到大排序,如下图所示(每一个红框为一次进行)。


       第一次进行,i=1(标红字体为t=arr[1])、j=0,①while操作不进行,t插入到arr[1]数组位;


       第二次进行,i=2(标红字体为t=arr[2])、j=1,①while操作进行,将arr[1]插入到arr[2]数组位,i=2,j=0,②while操作不进行,t插入到arr[1]数组位;


       第三次进行,i=3(标红字体为t=arr[3])、j=2,①while操作进行,将arr[2]插入到arr[3]数组位,i=3,j=1,②while操作不进行,t插入到arr[2]数组位;


       第四次进行,i=4(标红字体为t=arr[4])、j=3,①while操作进行,将arr[3]插入到arr[4]数组位,


i=4,j=2,②while操作不进行,t插入到arr[3]数组位;


       第五次进行,完成排序;

8a661ae85db33ac069cb677dcf3d1d4f_8a78ab4746bc4fa9a7025f4a66805400.png

bbcf89d75ea03497a0fc6665e80673f9_4c8e91bcc9924e9aad02f31ca095c3e2.png


3.代码如下

#include<iostream>
using namespace std;
#define size 10
class insertionsort {
public:
  void insertionsort_1(int a[],int len);
  void shownumber();
  int arr[size];
};
void insertionsort::insertionsort_1(int a[], int len)
{
  for (int i = 1; i < len; i++)
  {
  int t = a[i];
  int j = i - 1;
  while (j >= 0 && t < a[j])
  {
    a[j+1] = a[j];
    j--;
  }
  a[j + 1] = t;
  //测试代码
  cout << i + 1 << ":" << " ";
  for (int m = 0; m < len; m++)
  {
    cout << a[m] << " ";
  }
  cout << endl;
  }
}
void insertionsort::shownumber()
{
  for (int i = 0; i < size; i++)
  {
  cout << this->arr[i] << " ";
  }
}
void text()
{
  insertionsort is;
  for(int i=0;i<size;i++)
  { 
  cin >> is.arr[i];
  }
  is.insertionsort_1(is.arr, size);
  is.shownumber();
}
int main()
{
  text();
}


4.结果如下

c9119e386c482837711e76db525b9fd8_2b1878214886497c84eb470755a8a4a8.png

目录
相关文章
|
29天前
|
Ubuntu Linux Shell
C++ 之 perf+火焰图分析与调试
【11月更文挑战第6天】在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,最近了解到Perf这个神器,这里也展开介绍一下如何使用Perf以及如何去画火焰图。
|
2月前
|
存储 算法 搜索推荐
对二叉堆的简单分析,c和c++的简单实现
这篇文章提供了对二叉堆数据结构的简单分析,并展示了如何在C和C++中实现最小堆,包括初始化、插入元素、删除最小元素和打印堆的函数,以及一个示例程序来演示这些操作。
39 19
|
2月前
|
Ubuntu Linux Shell
C++ 之 perf+火焰图分析与调试
【10月更文挑战第8天】在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,最近了解到Perf这个神器,这里也展开介绍一下如何使用Perf以及如何去画火焰图。
|
2月前
|
存储 算法 C++
高精度算法(加、减、乘、除,使用c++实现)
高精度算法(加、减、乘、除,使用c++实现)
570 0
高精度算法(加、减、乘、除,使用c++实现)
|
2月前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
21 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
2月前
|
算法 定位技术
数据结构与算法学习九:学习递归。递归的经典实例:打印问题、阶乘问题、递归-迷宫问题、八皇后问题
本文详细介绍了递归的概念、重要规则、形式,并展示了递归在解决打印问题、阶乘问题、迷宫问题和八皇后问题等经典实例中的应用。
48 0
|
2月前
|
搜索推荐 算法
【排序算法(一)】——插入排序,选择排序 —> 深层解析
【排序算法(一)】——插入排序,选择排序 —> 深层解析
|
2月前
|
存储 算法 决策智能
【算法】博弈论(C/C++)
【算法】博弈论(C/C++)
|
2月前
|
存储 算法 C++
【算法】哈希映射(C/C++)
【算法】哈希映射(C/C++)
|
2月前
|
机器学习/深度学习 人工智能 算法
【算法】最长公共子序列(C/C++)
【算法】最长公共子序列(C/C++)