算法与数据结构---插入排序
来源:互联网 发布:7.62口径秃鹰数据 编辑:程序博客网 时间:2024/05/17 13:40
算法与数据结构—插入排序
算法思路
例如:给定一个无序数组int arr={1,3,2,6,9}; n代表集合数组的长度,给出一个算法将数组arr按照从小到大的顺序进行排列。
插入排序:看当前位置i的值是否比它前一个数小,如果小就与前面的数交换位置。
代码
public static void insertionSort(int[] arr,int n){ //插入排序中数组的开始默认是有序的。 for(int i=1;i<n;i++){ /*寻找元素arr[i]合适的插入位置,这里使用j>0而不是j>=0是因为每一次都是把 当前位置的元素和前一个位置的元素进行交换,所以最后发生的位置是j=1的时候*/ for(int j=i;j>0&&(arr[j]<arr[j-1]);j--){ //考察的是当前元素是否比前一个元素的值要小,yes交换位置 swap(arr,j,j-1) } }}public static void insertionSortPro(int[] arr,int n){ //使其在内层循环只交换一次 for(int i=1;i<n;i++){ //先把要考察的当前元素由e来保存一个副本 int e=arr[i]; int j; //如果arr[j - 1] > e说明不是我们要找的最终位置 for(j=i;j>0&&(e<arr[j-1]);j--){ //向后移位 arr[j]=arr[j-1] } arr[j]=e; }}public static void swap(int[] arr,int a,int b){ int temp=arr[a]; arr[a]=arr[b]; arr[b]=temp;}
时间复杂度
1.插入排序与选择排序的最大区别在于插入排序可以提前结束循环查找。而选择排序是每次都需要进行全数组扫描。
2.对于insertionSort算法来说,它的时间复杂度为O(n^2),并且效率要比同为O(n^2)的选择排序还要慢,是因为在比较的同时,程序还在不停的做swap(arr,j,j-1)交互,交互要比比较更加耗时。
3.对于insertionSortPro算法,它优化的核心思想在于使内层循环只交换一次。当e
阅读全文
0 0
- 数据结构与算法-插入排序
- 【数据结构与算法】插入排序
- 算法与数据结构---插入排序
- 插入排序 Java数据结构与算法
- 数据结构与算法之二分法插入排序
- 数据结构与算法之插入排序
- python数据结构与算法 32 插入排序
- 数据结构与算法分析-插入排序
- 【数据结构与算法】直接插入排序
- 【数据结构与算法 00】二分插入排序
- 【数据结构与算法 03】直接插入排序
- [数据结构与算法]直接插入排序
- 数据结构与算法之插入排序
- <四>java数据结构与算法 插入排序
- 【数据结构与算法】——插入排序
- 数据结构与算法(选择性插入排序)
- Java数据结构与算法之插入排序
- 数据结构与算法:C++实现插入排序
- oracle不同数据库表数据同步
- PyCharm:Error running xxx: Cannot run program "D:\Python27\python.exe"
- 算法与数据结构---选择排序
- Android 代码混淆技术总结
- 学会如何使用移动用户反馈系统,让你玩转APP
- 算法与数据结构---插入排序
- PHP之设计模式(二)---基础篇
- C++ 高性能服务器网络框架设计细节
- 数据报告制作
- Linux下安装Tomcat服务器和部署Web应用
- PHP连接SQL SERVER 数据库 PHP连接MYSQL数据库并解决中文乱码问题。
- CAS单点登录-密码管理(十三)
- 【MySQL】查看mysql实时运行sql的工具–orztop
- virsh通过xml 创建虚拟机