插入排序
来源:互联网 发布:linux home没root权限 编辑:程序博客网 时间:2024/05/29 09:15
1。基本思想
将n个元素的数列分为已有序和无序两个部分,如下所示:
{{a1},{a2,a3,a4,…,an}}
{{a1⑴,a2⑴},{a3⑴,a4⑴ …,an⑴}}
…
{{a1(n-1),a2(n-1) ,…},{an(n-1)}}
每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。
2。举例
示例:假设给定数组A[1......6]={ 3,5,8,9,1,2 },我们来分析一下A数组进行选择排序的过程
第一趟:i=1,index=5, a[1] 和 a[5] 进行交换。得到序列:{ 1,5,8,9,3,2 }
第二趟:i=2,index=6, a[2] 和 a[6] 进行交换。得到序列:{ 1,2,8,9,3,5 }
第三趟:i=3,index=5, a[3] 和 a[5] 进行交换。得到序列:{ 1,2,3,9,8,5 }
第四趟:i=4,index=6, a[3] 和 a[5] 进行交换。得到序列:{ 1,2,3,5,8,9 }
第五趟:i=5,index=5, 不用交换。得到序列:{ 1,2,3,5,8,9 }
(6-1)趟选择结束,得到有序序列:{ 1,2,3,5,8,9 }
3。代码
void InsertSort() { for(int i=1;i<n;i++){ int temp = a[i]; int j=i-1; while(j>0&&a[j]>temp){ a[j+1]=a[j]; j--; } a[j++]=temp; }}4。复杂度
最佳效率O(n);最糟效率O(n²)与冒泡、选择相同,适用于排序小列表 若列表基本有序,则插入排序比冒泡、选择更有效率。
- 插入排序-【插入排序】
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- q3explore
- 据说这块板子最近很火哦!
- algorithm week6
- linux C语言编程 Glade gtk
- Codeforces 2A Winner
- 插入排序
- hdu - 3724 - Encoded Barcodes(Trip)
- android list变化时 listview notifyDataSetChanged 无效
- HDU1160FatMouse's Speed
- jsp分页后如果数据库中没有数据导致页面显示不全 表格的边线显示不全
- 从表单获取的数据判断是否为空的办法
- 黑马程序员 关于学习毕老师IO流后的一些笔记
- Java中long和Long有什么区别
- 黑马程序员 GUI的一些笔记