排序之直接插入排序
2013-08-02 13:55
295 查看
记得我们玩斗地主的游戏吗?我们取一张牌时,发现它是小的就插入到前面去,如果最大,就不动。插入排序就是这样的思想。从数组第二个元素开始,一直向前寻找自己待插入的位置。
它需要比较n-1次,从第二个元素开始至最后一个元素。
第一层循环:for(i=1;i<array.length;i++)
循环比较n-1次。
第二层循环:for(j=i-1;j>=0;j--)
从当前元素的前一个数据开始比较,如果小就将前一个数据后移一个位置。
public class DirectInsert{
public static void main(String args[]){
int array[]=new int[]{10,9,8,7,6,5,4,3,2,1};
int i,j;
int temp;
System.out.println("在排序之前的输出:");
for(i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
for(i=1;i<array.length;i++){
temp=array[i];
for(j=i-1;j>=0;j--){
if(temp<array[j]){
array[j+1]=array[j];
}
else{
break;
}
}
array[j+1]=temp;
}
System.out.println("\n排序之后的输出:");
for(i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
}
它需要比较n-1次,从第二个元素开始至最后一个元素。
第一层循环:for(i=1;i<array.length;i++)
循环比较n-1次。
第二层循环:for(j=i-1;j>=0;j--)
从当前元素的前一个数据开始比较,如果小就将前一个数据后移一个位置。
public class DirectInsert{
public static void main(String args[]){
int array[]=new int[]{10,9,8,7,6,5,4,3,2,1};
int i,j;
int temp;
System.out.println("在排序之前的输出:");
for(i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
for(i=1;i<array.length;i++){
temp=array[i];
for(j=i-1;j>=0;j--){
if(temp<array[j]){
array[j+1]=array[j];
}
else{
break;
}
}
array[j+1]=temp;
}
System.out.println("\n排序之后的输出:");
for(i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
}
相关文章推荐