插入排序 insert_sort
来源:互联网 发布:生命安全教育网络测试 编辑:程序博客网 时间:2024/05/29 07:54
插入排序,是一种稳定的排序方法,在要排序的数据量不是很大的情况下是比较有效的。
所谓稳定的排序方法,就是说假如要排序的数据中有两个相同的数据,排序完成后,这两个数据的相对位置没有变化,或者直接说没有交换这两个数据的位置。
插入排序的工作方式是将无序的数组元素一个个的插入到有序的数组中,如果只给出一个数组,那么可以把第一个元素当成有序部分,剩下的其他的元素当成无序部分一个个插入到有序的部分。
具体的过程(以将数组a[n]从小到大排列为例):
1.将数组分为{a[0]}和{a[1],a[2],···,a[n-1]}。
2.将a[1]插入到{a[0]}中,插入的位置是第一个不大于a[1]的元素后面,而大于a[1]的每一个元素都后移一个位置。此时有序的部分变为{a[0],a[1]}(假定a[0]<=a[1])。
3.将a[2]插入到{a[0],a[1]}中。
4.每次取无序部分的第一个元素插入到有序部分,当无序部分的所有元素都插入有序部分时,数组就已经完成排序了。
具体代码如下:
//--------------------//插入排序//--------------------#include<cstdio>#define size 9int a[size]={1,3,2,4,9,6,7,8,5};void print(){for(int i=0;i<size;i++)printf(" %d",a[i]);printf("\n");}void insert_sort(int a[],int n){int i,j,temp;for(i=1;i<n;i++){temp=a[i];for(j=i-1;(j>=0)&&(a[j]>temp);j--){a[j+1]=a[j];}a[j+1]=temp;printf("第%d次插入后的数组:",i);print();}}int main(){insert_sort(a,size);printf("执行插入排序后的数组:");print();return 0;}代码运行结果如下:
可以看到,执行i次插入操作之后,将会使前i+1个元素有序排列,所以对于有n个元素的数组,只需要进行n-1次插入操作就可以完成排序。
阅读全文
0 0
- Insert_sort 插入排序
- 插入排序(Insert_Sort)
- 插入排序 insert_sort
- scala 实习插入排序(Insert_sort)
- (直接)插入排序INSERT_SORT
- # INSERT_SORT&MERGE_SORT插入排序与归
- 插入排序(insert_sort)与 并归排序(merge_sort) 算法分析
- insert_sort
- Insert_Sort
- 插入排序-【插入排序】
- insert_sort 的简单实现
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 苹果手机botton按钮圆角
- 厉害了!小学生用大数据研究苏轼,结论出人意料
- 苹果首席设计师:iPhone X 耗时五年,设计要等技术赶上
- 强化学习基础学习系列之求解MDP问题的value-base方法
- 无线局域网中RADIUS协议原理与实现
- 插入排序 insert_sort
- Android+RecyclerView
- android之线程池
- XListView+Library加载更多
- 网页前端代码存档
- [sql] 查询一个表中 三个字段都相同的记录
- 程序员转型学习人工智能(AI)
- Android开发:用Drawable XML绘制带阴影效果的圆形按钮
- 小学生大数据分析-自己的感触