java排序之一插入排序(一个方法同时给整型和字符串排序)

来源:互联网 发布:金融大数据应该学什么 编辑:程序博客网 时间:2024/05/29 17:44

关于直接插入排序的理解和思路

首先从其定义来理解:

插入排序:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

算法描述:

1、一个待排数组分成两部分:第一个元素看做已经排好的序列和后面所有的未排好的序列

2、取出未排好序列中的第一个元素key,与已经排好的序列中的元素从后向前进行比较

3、若前面的已经排好的序列中的元素data[i]大于key的值,则将data[i]移到下一位置data[i+1]

4、重复步骤3,直到找到已排序的元素小于或者等于key的位置,

5、将key的值插入到该位置后一个位置

6、进入(循环)重复2-5直到所有的元素都排好序为止

关于比较整数和字符串用到了接口 Comparable中的compareTo方法

因为Integer和String都实现了comparable都实现了Comparable接口

所以测试数据的时候通过使用 Comparable声明一个整型或字符串的数组即可

代码如下仅供参考:

package com.cslience.test;/* * author:cslience * time:2013/11/26 */public class InsertionSort {public void insertSort(Comparable[] data){for(int i=1;i<data.length;i++){   Comparable key=data[i];   int j=i;   //关键字与其前面已排好的序列(从后向前顺次)进行比较   while(j>0&&key.compareTo(data[j-1])<0){   //将大的数向后移动一个位置   data[j]=data[j-1];   j--;   }   data[j]=key;}}//打印出数组中的所有元素public void show(Comparable[] data){for(int i=0;i<data.length;i++){System.out.println(data[i]);}}public static void main(String[] args){// 测试数据Comparable[] data1={10,3,15,9,0};Comparable[] data2={"abc","abd","bca","bad","aaa"};InsertionSort insert=new InsertionSort();System.out.println("插入排序从小到大排列数组:");insert.insertSort(data1);insert.show(data1);System.out.println("插入排序从小到大排序字符串:");insert.insertSort(data2);insert.show(data2);}}


原创粉丝点击