设为首页 加入收藏

TOP

插入排序算法的Java实现
2015-07-16 12:56:31 来源: 作者: 【 】 浏览:7
Tags:插入 排序 算法 Java 实现

1,对元素进行排列时,元素之间需要进行比较,因此需要实现Comparable接口。即,>. 更进一步,如果允许待比较的类型可以和它的父类型进行比较,则需要写成:, 其中 表示 T 的任意超类。


2,InsertionSortArray.java 类实现了从小到大顺序以插入排序的方式对数据进行排序。


3,insertionSort方法负责对每一个元素进行排序,insertInOrder方法将待排序的元素插入到合适的位置,相当于执行具体的操作。


具体代码如下:


public class InsertionSortArray {
? ? public static > void insertSort(T[] a, int n){
? ? ? ? insertionSort(a, 0, n - 1);//对序列a进行排序,其起始索引为0,最后元素的索引为n-1
? ? }
? ?
? ? //从索引first到last执行插入排序
? ? private static > void insertionSort(T[] a, int first, int last){
? ? ? ? for(int unsorted = first + 1; unsorted <= last; unsorted++){//插入排序中第一个元素视为有序,故从第二个元素开始
? ? ? ? ? ? T firstUnsorted = a[unsorted];//获得待排序的元素
? ? ? ? ? ? insertInOrder(firstUnsorted, a, first, unsorted - 1);//将之插入到合适的位置
? ? ? ? }
? ? }
? ?
? ? //将element插入到已经排好序的,起始位置为begin,终止位置为end的 序列中
? ? private static > void insertInOrder(T element, T[] a, int begin, int end){
? ? ? ? int index = end;
? ? ? ? //待插入的元素依次从后往前与已排序好的元素进行比较,直至找到比它小的元素为止
? ? ? ? while((index >= begin) && (element.compareTo(a[index]) < 0)){
? ? ? ? ? ? a[index + 1] = a[index];//将元素后移一位,a[index+1]其实就是element
? ? ? ? ? ? index--;
? ? ? ? }
? ? ? ? a[index + 1] = element;//将element插入到合适的位置
? ? }
}


4,在实现排序时,我们使用了泛型。使用泛型的好处是:对于任何类型的对象,只要它实现了Comparable接口,就可以通过调用compareTo方法对之进行比较。


因此,它还可以对自定义类型的对象进行排序,只要你定义的类实现Comparable接口就可以了。


以下测试类中定义了String类型数组和Integer类型的数组,并都可以调用插入排序的方法进行排序,代码如下:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Neo4j创建自动索引 下一篇选择排序算法的Java实现

评论

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