设有一组初始关键字序列为(24,35,12,27,18,26),则第3趟直接插入排序结束后的结果的是______ _________________________。
原答案是
(12,24,35,27,18,26)
我答案是
12,24,27,35,18,26
------解决方案--------------------
原答案不正确吧
------解决方案--------------------
答案是正确的,直接插入排序就是每次从无序的序列中拿出“第一个”元素,放到另一个有序的序列中,那么本题就是先拿24,然后拿35,再然后是12,也就是这三个数排序。第一次24,35,12,27,18,26 第二次 24,35,12,27,18,26 第三次12,24,35,27,18,26,即为12,24,35,27,18,26这个答案
------解决方案--------------------
我始终觉得原答案不正确:2种方式,试试;
public class Test2
{
public static void main(String[] args)
{
int[] data = { 24, 35, 12, 27, 18, 26 };
for (int i = 1; i < data.length; i++)
{
for (int j = i; j > 0; j--)
{
if (data[j] < data[j - 1])
{
int temp = data[j];
data[j] = data[j - 1];
data[j - 1] = temp;
}
}
for (int m = 0; m < data.length; m++)
{
System.out.print(data[m] + " ");
}
System.out.println();
}
System.out.println("------------------------------");
int[] data1 = { 24, 35, 12, 27, 18, 26 };
int temp = 0;
for (int i = 1; i < data1.length; i++)
{
int j = i - 1;
temp = data1[i];
for (; j >= 0 && temp < data1[j]; j--)
{
data1[j + 1] = data1[j]; // 将大于temp的值整体后移一个单位
}
data1[j + 1] = temp;
for (int m = 0; m <data1.length; m++)
{
System.out.print(data1[m]+" ");
}
System.out.println();
}
}
}
24 35 12 27 18 26
12 24 35 27 18 26
12 24 27 35 18 26
12 18 24 27 35 26
12 18 24 26 27 35
------------------------------
24 35 12 27 18 26
12 24 35 27 18 26
12 24 27 35 18 26
12 18 24 27 35 26
12 18 24 26 27 35