怎样开发设计网站建设,博物馆网页设计案例,普通人怎么样做网站,wordpress微信登录插件文章目录 1. 插入排序原理2. 算法图解3. 核心代码#xff1a;4. 插入排序整体代码实现 1. 插入排序原理
插入排序是一种最简单直观的排序算法#xff0c;它的工作原理是通过构建有序序列#xff0c;对于未排序数据#xff0c;在已排序序列中从后向前扫描#xff0c;找到相… 文章目录 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