package mydemo;
/**
* 插入排序
* @author Administrator
*
*/
public class InsertSort {
public static void main(String[]wzq)
{
int[] data= {9,3,5,1,6,2,8,4,7,23,44,13};
int [] sortData =insertSort2(data);
for(int a:sortData)
{
System.out.print(a);
}
}
public static int[] insertSort1(int[]nums)
{
int wu;//数组中无序区左边第一个数的下标
for(wu=1;wu<nums.length;wu++)
{
int wuc=nums[wu];//无序区要比较的数
int yxr = wu;//记录
while(yxr>0&&nums[yxr-1]>wuc)
{
nums[yxr]=nums[yxr-1];
yxr--;
}
nums[yxr]=wuc;
}
return nums;
}
public static int[] insertSort2(int[]nums)
{
int wu;//数组中无序区左边第一个数的下标
for(wu=1;wu<nums.length;wu++)
{
int wuc=nums[wu];//无序区要比较的数
int count = wu;//存储此次要比较的无序区的数据的下标
/*从有序区的最右边一个数开始依次次跟无序区此次要比较的数比较
只要比较数比无序区的数小则插入有序去,并且有序区数据依次向右移一个位
直到碰到有序区的数据比其小,则把比较数插入有序区比其小的位置
*/
for(;count>0&&(nums[count-1]>wuc);count--)
{
nums[count]=nums[count-1];
}
nums[count]=wuc;
}
return nums;
}
}
/**
* 插入排序
* @author Administrator
*
*/
public class InsertSort {
public static void main(String[]wzq)
{
int[] data= {9,3,5,1,6,2,8,4,7,23,44,13};
int [] sortData =insertSort2(data);
for(int a:sortData)
{
System.out.print(a);
}
}
public static int[] insertSort1(int[]nums)
{
int wu;//数组中无序区左边第一个数的下标
for(wu=1;wu<nums.length;wu++)
{
int wuc=nums[wu];//无序区要比较的数
int yxr = wu;//记录
while(yxr>0&&nums[yxr-1]>wuc)
{
nums[yxr]=nums[yxr-1];
yxr--;
}
nums[yxr]=wuc;
}
return nums;
}
public static int[] insertSort2(int[]nums)
{
int wu;//数组中无序区左边第一个数的下标
for(wu=1;wu<nums.length;wu++)
{
int wuc=nums[wu];//无序区要比较的数
int count = wu;//存储此次要比较的无序区的数据的下标
/*从有序区的最右边一个数开始依次次跟无序区此次要比较的数比较
只要比较数比无序区的数小则插入有序去,并且有序区数据依次向右移一个位
直到碰到有序区的数据比其小,则把比较数插入有序区比其小的位置
*/
for(;count>0&&(nums[count-1]>wuc);count--)
{
nums[count]=nums[count-1];
}
nums[count]=wuc;
}
return nums;
}
}