设为首页 加入收藏

TOP

排序算法(二) 插入排序
2014-11-23 23:36:26 来源: 作者: 【 】 浏览:7
Tags:排序 算法 插入

插入排序:

从头到尾遍历数组

将当前元素同当前元素之前的所有元素对比
如果,当前元素小于其之前元素,将当前元素向前移,直到使当前元素之前的所有元素按大小排好序

代码如下:

[html]
package com.robert.paixu;

/**
* 插入排序
* 从小到大排序
* @author Administrator
*/
public class InsertSortAlgorithm {

public static void main(String[] args){
int[] arrays = {4,6,9,2,0,1,-5,10,-20,100,20,15};
insertSort(arrays);
display(arrays);
}

/**
* 插入排序
*/
private static void insertSort(int[] arrays){
//循环遍历数组
int currentIndex = 0;
int preIndex = 0;
for(int i=0;i {
/**
* 当前元素同当前元素之前的所有元素对比
* 1,将当前元素向前移,直到使当前元素之前的所有元素按大小排好序
*/
currentIndex = i;
preIndex = i-1;
while(currentIndex!=0&&preIndex>=0){
if(arrays[currentIndex] {
swap(arrays,currentIndex,preIndex);
currentIndex--;
}
else
{
break;
}
preIndex--;
}
}
}

private static void swap(int[] arrays,int currentIndex,int preIndex){
int temp = arrays[currentIndex];
arrays[currentIndex] = arrays[preIndex];
arrays[preIndex] = temp;
}

/**
* 显示排序后的数组的值
* @param arrays
*/
private static void display(int[] arrays){

for(int i=0;i System.out.print(arrays[i]+" ");
}
}

}
在最好的情况下,即数组已经是有序的时候,插入排序的时间复杂度是O(n)

数组越有序,需要做的工作就越少

在最坏的情况下,该算法在最坏的情况下的时间复杂度为O(n^2)

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇排序算法(一) 选择排序 下一篇排序算法(三) 冒泡排序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: