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

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

首先从其定义来理解:

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

算法描述:

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);

	}

}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值