黑马程序员技术交流社区
标题:
插入排序问题
[打印本页]
作者:
qqhao01
时间:
2013-9-19 16:49
标题:
插入排序问题
本帖最后由 qqhao01 于 2013-9-19 18:43 编辑
如代码:
//插入排序
public static void insertionSort(int[] arr)
{
for(int x=1;x<arr.length;x++)
{
for(int y=x;(y>0)&&(arr[y]<arr[y-1]);y--)//这里有些没明白,主要是(y>0)&&(arr[y]<arr[y-1])
{
int temp=arr[y];
arr[y]=arr[y-1];
arr[y-1]=temp;
}
}
}
public static void printArray(int[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
{
System.out.print(arr[x]+",");
}else{
System.out.println(arr[x]+"]");
}
}
}
public static void main(String[] args)
{
int[] arr={1, 3, 2, 5, 12, 123, 23, 2, 541, 1, 76, 76};
//排序前
printArray(arr);
//进行排序
insertionSort(arr);
//排序后
printArray(arr);
}
<p> </p>
复制代码
作者:
路边小色狼
时间:
2013-9-19 17:43
for(int y=x;(y>0)&&(arr[y]<arr[y-1]);y--)// arr[y]<arr[y-1]表示数组中前者比后者大时,,而y>0是为了让y-1>=0,因为角标最小为0. 两个条件都满足才执行以下动作
{
int temp=arr[y];
arr[y]=arr[y-1];
arr[y-1]=temp;
}
作者:
(0.0)’
时间:
2013-9-19 17:54
1、y>0 是因为如果y--; 到0了就不满足条件
2、(arr[y]<arr[y-1]) 只要,数组中后面这个数小于前面的数就进行互换
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2