算法学习之旅,中级篇(2)-–插入排序
2017-08-18 22:15
162 查看
介绍
每次从无序表中取出第一个元素,把它插入到有序表中的合适位置。
分析
第一趟:比较前两个数的大小,然后把其中最小的插入排在第一个位置。
第二趟:比较第三个数与前两个数的大小,大的数后移,知道遇到小的,便插入到较小数的后面,数不再移动。
依次进行,进行了N-1躺后,就完成了整个排序过程。
代码
遇到的问题
插入排序是稳定的排序算法。最坏的时间复杂度是逆序o(n^2)。
每次从无序表中取出第一个元素,把它插入到有序表中的合适位置。
分析
第一趟:比较前两个数的大小,然后把其中最小的插入排在第一个位置。
第二趟:比较第三个数与前两个数的大小,大的数后移,知道遇到小的,便插入到较小数的后面,数不再移动。
依次进行,进行了N-1躺后,就完成了整个排序过程。
代码
#include<iostream> using namespace std; void print(int a[],int n) { for(int j=0;j<n;j++) cout<<a[j]<<" "; cout<<endl; return; } void insert_Sort(int array[],int n) { for(int i=1;i<n;i++) { if(array[i]<array[i-1]) { int temp=array[i]; int k=i-1; for(int j=k;j>=0&&temp<array[j];j--) { array[j+1]=array[j]; k--; } array[k+1]=temp; } } } int main() { int a[8]={3,2,4,5,7,1,2,9}; cout<<"初始值: "; for(int j=0;j<8;j++) cout<<a[j]<<" "; cout<<endl<<endl; insert_Sort(a,8); print(a,8); system("pause"); return 0; }
遇到的问题
插入排序是稳定的排序算法。最坏的时间复杂度是逆序o(n^2)。
相关文章推荐
- 算法学习记录-排序——插入排序(Insertion Sort)
- 算法学习之旅,中级篇(1)-–选择排序
- ACM算法学习状态-中级
- 算法学习之旅,中级篇(8)-–分治之二分搜索(递归)
- [算法学习]20150409.1.插入排序
- 算法学习-插入排序
- Java再学习-算法之插入排序
- 算法学习笔记----插入排序
- 算法学习之旅,中级篇(3)-–冒泡排序
- 算法学习之旅,中级篇(5)-–递归之杨辉三角
- 【iOS学习笔记】iOS算法(三)之插入排序
- 算法学习-----插入排序(Java)
- 数据结构和算法学习系列之插入排序及希尔排序
- 算法学习之旅,中级篇(6)-–递归之斐波拉契数列
- 算法学习之插入排序
- 170913_算法导论学习(一)_2.1 插入排序
- 算法学习之旅,中级篇(4)-–快速排序
- 2.1插入排序(算法导论学习)
- [学习笔记]排序算法之插入排序
- 算法学习与代码实现2——插入排序