日期:2014-05-17  浏览次数:20820 次

求解数据结构一题
设有一组初始关键字序列为(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