好多好多排序

原创 2016年08月30日 16:29:10



插入排序


直接插入排序

直接插入排序的基本思想:

每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止


先留下第一个数a[0],从a[1]开始看

每次a[i]先和前面一个数据a[i-1]进行比较

因为a[0...i-1]是有序的,a[i]>a[i-1]时,说明a[0..i]也是有序的,无需调整

如果a[i]<a[i-1],就要将a[i]插入到前面的有序区间,这里再用一个j来操作

如果a[j]前一个数据a[j-1] > a[j],就交换a[j]和a[j-1],再j--直到a[j-1] <= a[j],

(要插入的数只要还小就继续交换向前在接着比较)


public void Insertsort(int[] a,int n){
		for(int i=1;i<n;i++){
			for(int j=i-1;j>=0&&a[j]>a[j+1];j--){
				int temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}

直接插入排序的算法性能



时间复杂度 

当数据正序时,执行效率最好,每次插入都不用移动前面的元素,时间复杂度为O(N)。 
当数据反序时,执行效率最差,每次插入都要前面的元素后移,时间复杂度为O(N2)。
所以,数据越接近正序,直接插入排序的算法性能越好。 

空间复杂度

由直接插入排序算法可知,我们在排序过程中,需要一个临时变量存储要插入的值,所以空间复杂度为 1 。

算法稳定性

直接插入排序的过程中,不需要改变相等数值元素的位置,所以它是稳定的算法。 





















相关文章推荐

排序算法ppt

  • 2017年11月03日 20:37
  • 1.37MB
  • 下载

C语言奇偶排序

  • 2017年11月15日 22:00
  • 465B
  • 下载

最简单的List集合排序方法

最简单的List集合排序方法

Oracle中rownum和 order by联合使用导致排序错乱

在使用Oracle进行分页查询的时候,一般情况下我们都会携带很多参数。但是今天发现一个很奇怪的东西,当排序字段不是主键,且多条数据中该排序字段的值均相同的情况下,会出现分页查询的排序顺序和不分页查询的...

自然归并排序java版

  • 2017年11月06日 13:19
  • 3KB
  • 下载

Java中的冒泡排序算法实现

巴黎的告白气球 2017-01-12 11:49 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走...

C++实现插入排序

  • 2017年11月02日 22:26
  • 712B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:好多好多排序
举报原因:
原因补充:

(最多只允许输入30个字)