package insertsort;
/**
* 直接插入排序
* @author Administrator
*
*设数组为a[0…n-1]。
*1初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=1
*2.将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。
*3.i++并重复第二步直到i==n-1。排序完成。
*/
public class DirectInsertSort
{
public void Sort(int a[])
{
int t;
for(int i=0;i<a.length;i++)
{
t=a[i]; //将待排序的元素a[i]赋给t
for(int j = 0;j < i;j++)
{
if(t < a[j]) //在前面的排序区中找第一个比t小的数
{
for(int k = i - 1; k >= j; k--) //将比a[i]大的数据向后移
{
a[k + 1] = a[k];
}
a[j] = t; //将a[i]放到正确位置上
break;
}
}
}
for(int i = 0;i<a.length;i++)
{
System.out.print(" " + a[i]);
}
}
}
直接插入排序
最新推荐文章于 2024-03-19 18:50:33 发布