插入排序算法解析与实例
来源:互联网 发布:php const 累成员实例 编辑:程序博客网 时间:2024/06/06 07:43
1、什么是插入排序
插入排序对于少量元素的排序是一个有效的算法。举个栗子,插入排序的工作方式像对打扑克牌时对手中的扑克牌进行排序,开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它查人左手的正确位置。为了找到一张牌中的正确位置,我们从右到左将它与已经拿在手中的每张牌进行比较,拿在左手中的牌总是排序好的,原来这些牌时桌子上牌堆中顶部的牌。这就是插入排序的简单描述。
2、详解
将n个元素的数列分为已有序和无序两个部分,如下所示:
{{a1},{a2,a3,a4,…,an}}
{{a1⑴,a2⑴},{a3⑴,a4⑴ …,an⑴}}
…
{{a1(n-1),a2(n-1),…},{an(n-1)}}
每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。
3、算法步骤
1 for j = 2 to A.length
2 key = A[j]
3 //insert A[j] into thesorted sequence A[1…….j-1]
4 i = j – 1
5 while i>0 and A[i] > key
6 A[i+1] = A[i]
7 i = i – 1
8 A[i+1] = key
3、实例与代码
已知数组a[]= {1,4,6,8,7,9,10,2,5,3,11};请用插入排序算法对数组进行从小到大排序。
#include <stdio.h>
int main(int argc, char *argv[])
{
int a[] ={1,4,6,8,7,9,10,2,5,3,11};
insertSort(a,0,11);
for (int i =0 ;i <11;i++)
{
printf("%d,",a[i]);
}
return 0;
}
void insertSort(int array[],unsigned int first,unsigned last)
{
int i,j;
int temp;
for (i = first+1;i<=last;i++)
{
temp = array[i];
j = i-1;
while((j>=first)&&(array[j]>temp))
{
array[j+1] =array[j];
j--;
}
array[j+1] = temp;
}
}
- 插入排序算法解析与实例
- 一步一步解析JAVA排序算法--插入排序
- 数据结构与算法-插入排序
- 插入排序基本思路与算法
- 【数据结构与算法】插入排序
- 算法与数据结构---插入排序
- 深度解析插入排序与归并排序
- 算法导论----<插入排序>及实例
- java直接插入排序算法实例
- 算法之插入排序与选择排序
- 排序算法-选择与插入排序
- 【算法】简单插入排序与希尔排序
- 插入排序 Java数据结构与算法
- 数据结构与算法之二分法插入排序
- 数据结构与算法之插入排序
- 算法学习与实践之插入排序
- 插入排序算法原理与实现
- python数据结构与算法 32 插入排序
- Tomcat 8.5.6 登录控制台界面查看 状态
- uboot简介
- echarts3学习
- StrutsPrepareAndExecuteFilter
- win7下实现Host与Ip的映射
- 插入排序算法解析与实例
- Big Endian 和 Little Endian
- 快慢指针
- 自动化运维工具SaltStack详细部署
- Maximum Subarray
- vuejs 常用ui组件
- Java的引用和C++的指针
- ubuntu 安装配置VPN L2TP
- Leetcode-17. Letter Combinations of a Phone Number