排序算法之直接插入排序
2017-04-28 10:13
162 查看
阅读目录
1、基本思想
2、代码示例
3、效率分析
回到目录
在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经有序的,现在要把第n个数插到前面的有序数中,使得这n个数也是有序的。如此反复循环,直到全部排好顺序。这个思想类似打扑克的时候抓牌的情形。
回到目录
回到目录
空间复杂度O(1)
时间复杂度O(n2)
最差情况:反序,需要移动n*(n-1)/2个元素
最好情况:正序,不需要移动元素
数组在已排序或者是“近似排序”时,插入排序效率的最好情况运行时间为O(n);
插入排序最坏情况运行时间和平均情况运行时间都为O(n2)。
出处:http://hehaiyang.cnblogs.com/
本博客内容主要以学习、研究和分享为主,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
1、基本思想
2、代码示例
3、效率分析
回到目录
1、基本思想
在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经有序的,现在要把第n个数插到前面的有序数中,使得这n个数也是有序的。如此反复循环,直到全部排好顺序。这个思想类似打扑克的时候抓牌的情形。回到目录
2、代码示例
package sort; public class InsertSort { public void TestSort() { int a[]={49,38,65,97,76,13,27,49,78,34,34,15,35,25,53,51}; sort(a); } public void sort(int arr[]) { int i, j; //数组长度。 int len = arr.length; //临时变量,用于存放当前插入的元素。 int temp; //假定第一个元素arr[0]已经在正确的位置上。 //则仅需遍历 arr[1]-arr[n-1]列表。 for (i = 1; i < len; i++) { //对于每次遍历,从arr[0]-arr[i-1]范围内的元素已经是有序的。 //每次遍历的任务是:通过循环前面已排序的子列表,将arr[i]的元素插入到从arr[0]到a[i-1]列表中的正确位置上。 j = i; //将arr[i]复制给temp。 temp = arr[i]; //向前循环列表,比较temp与arr[j-1]、arr[j-2]...的大小。 //当temp大于或等于arr[j-1]或者在列表开始处结束。 while (j > 0 && temp < arr[j - 1]) { //满足条件,arr[j-1]元素向后移一位。 arr[j] = arr[j - 1]; j--; } //循环结束,将temp复制给arr[j] arr[j] = temp; } for (i = 0; i < arr.length; i++){ System.out.print(arr[i] + " "); } } }
回到目录
3、效率分析
空间复杂度O(1)时间复杂度O(n2)
最差情况:反序,需要移动n*(n-1)/2个元素
最好情况:正序,不需要移动元素
数组在已排序或者是“近似排序”时,插入排序效率的最好情况运行时间为O(n);
插入排序最坏情况运行时间和平均情况运行时间都为O(n2)。
出处:http://hehaiyang.cnblogs.com/
本博客内容主要以学习、研究和分享为主,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
相关文章推荐
- 排序算法总结(一)---- 直接插入排序,希尔排序(java实现)
- 排序算法复习:直接插入排序、堆排序、快排、冒泡排序
- 常见的五类排序算法图解和实现(插入类:直接插入排序,折半插入排序,希尔排序)
- 排序算法汇总(选择排序 ,直接插入排序,冒泡排序,希尔排序,快速排序,堆排序)
- 排序算法之直接插入排序的思想以及Java实现
- 排序算法 -- (一)直接插入排序
- 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序
- 【排序算法】直接插入排序
- 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序
- 五十道编程小题目 --- 28 八大排序算法 java 之 01直接插入排序
- 排序算法之直接插入排序
- 排序算法---基础算法(冒泡排序,快速排序,选择排序,直接插入排序,桶排序)
- 排序算法1_直接插入排序
- 排序算法直接插入排序
- 排序算法之直接插入排序
- 排序算法(直接插入排序)
- 排序算法(插入排序)——直接插入排序
- python排序算法-冒泡排序,选择排序,直接插入排序,希尔排序,归并排序,快速排序,堆排序
- Java排序算法(三):直接插入排序
- 排序算法(三) 直接插入排序与折半插入排序