已解决
C++数据结构X篇_21_插入排序(稳定的排序)
来自网友在路上 149849提问 提问时间:2023-10-25 15:07:34阅读次数: 49
最佳答案 问答题库498位专家为你答疑解惑
文章目录
- 1. 插入排序原理
- 2. 算法图解
- 3. 核心代码:
- 4. 插入排序整体代码实现
1. 插入排序原理
插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入
。
- 原理是将无序序列插入到有序序列中
- 直接插入排序的两种性质:
-
当待排序的原序列中大多数元素都已有序的情况下,此时进行的元素比较和移动的次数较少;
-
当原序列的长度很小时,即便它的所有元素都是无序的,此时进行的元素比较和移动的次数还是很少。
后篇介绍的希尔排序就是基于上面2个性质的改进
2. 算法图解
将待排序的集合看做两部分,已排序的区间(0…i) ; 待排序的区间[i…n);每次选择无序区间的第一个元素插入到有序区间的合适位置,直到整个数组有序。
因为不知道数组中得前几个元素是已经有序的,所以直接从第二个元素开始执行插入排序,将每个元素都进行一次插入排序。
算法图解如下:
3. 核心代码:
void insert_sort(int arr[], int length) //升序
{int j;//第一个元素当做有序的,第二个看做无序,从第二个插入第一个元素并进行比较for (int i = 1; i < length; i++){if (arr[i] < arr[i - 1]) //比升序序列最大值要小,进入插入排序{int temp = arr[i];//从右向左for (j = i - 1; j >= 0; j--){if (temp < arr[j]) //升序序列中元素大于arr[i]{arr[j + 1] = arr[j]; //向前移动一位}else{break;}}arr[j + 1] = temp;}}
}
4. 插入排序整体代码实现
#include <iostream>
using namespace std;void swap(int* a, int* b)
{int temp = *a;*a = *b;*b = temp;
}//打印数组
void printArr(int arr[])
{for (int i = 0; i < 10; i++){cout << arr[i] << endl;}
}//插入排序
void insert_sort(int arr[], int length) //升序
{int j;for (int i = 1; i < length; i++){if (arr[i] < arr[i - 1]) //比升序序列最大值要小{int temp = arr[i];for (j = i - 1; j >= 0; j--){if (temp < arr[j]) //升序序列中元素大于arr[i]{arr[j + 1] = arr[j]; //向前移动一位}else{break;}}arr[j + 1] = temp;}}printArr(arr);
}int main()
{int arr[] = { 8,2,3,9,6,4,7,1,5,10 };insert_sort(arr, 10);system("pause");return 0;
}
运行结果:
- 插入排序,插入排序代码实现,插入排序代码思路梳理
- 优秀博文:十大经典排序算法-插入排序算法详解,常见的几种排序(C++)
查看全文
99%的人还看了
相似问题
- 【Django-DRF用法】多年积累md笔记,第3篇:Django-DRF的序列化和反序列化详解
- 【Java 进阶篇】JavaScript JSON 语法入门:轻松理解数据的序列化和反序列化
- 【python学习】基础篇-常用模块-pickle模块:序列化和反序列化
- ZC序列理论学习及仿真
- 时间序列预测实战(十七)PyTorch实现LSTM-GRU模型长期预测并可视化结果(附代码+数据集+详细讲解)
- 代码随想录算法训练营第二十九天| 491 递增子序列 46 全排列
- 最长递增子序列
- 深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密
- c#Nettonsoft.net库常用的方法json序列化反序列化
- 基于C#实现最长公共子序列
猜你感兴趣
版权申明
本文"C++数据结构X篇_21_插入排序(稳定的排序)":http://eshow365.cn/6-24237-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: Python 自动化(十五)请求和响应
- 下一篇: 2.卷积神经网络(CNN)