您的位置:首页 > 编程语言 > Java开发

Java基础知识强化54:经典排序之插入排序(InsertSort)

2015-09-24 10:01 323 查看
1. 插入排序原理图:





[b]算法步骤:[/b]

1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。

2. 插入排序的代码实现:

 package cn.itcast;

/*
* 插入排序基本思想
* 将n个元素的数列分为已有序和无序两个部分,如插入排序过程示例下所示:   
* {{a1},{a2,a3,a4,…,an}}   
* {{a1⑴,a2⑴},{a3⑴,a4⑴ …,an⑴}}  
* {{a1(n-1),a2(n-1) ,…},{an(n-1)}}   
* 每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,
* 找出插入位置,将该元素插入到有序数列的合适位置中。
*/
public class InsertSort {
public static void sort(int[] data) {
for (int i = 1; i < data.length; i++) {
for (int j = i; (j > 0) && (data[j] < data[j - 1]); j--) {
swap(data, j, j - 1);
}
}

}

/*
* 交换数组中的两个元素
*/
public static void swap(int[] data, int i, int j) {
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: