首页 > 试题广场 >

经过三趟排序后,数组 A 的排列状态将是()

[单选题]

具有 n 个整数的数组 A=[29,6,28,20,2,24] 使用插入排序( Insertion Sort )算法排序,算法伪代码如下:


经过三趟排序后,数组 A 的排列状态将是()
  • 6,29,28,20,2,24
  • 6,28,20,2,24,29
  • 6,20,28,29,2,24
  • 2,6,20,24,28,29
推荐
实现机理是这样的:
有一组数据A=[29,6,28,20,2,24]
①第一次先排前俩,第二次排前三。。。。以此类推
②先获取A[j]的值存入一个变量中
③每次循环判断大小的目的就是为了找到A[j-1]小于e的情况
④当出现前大于e的情况,那就把大的值后移,也就是赋值给A[j]
⑤当出现前不大于e的时候(A[j-i]<e),break跳出,此时j不减减,此时j的位置就是需要e来填充的
第一趟的结果为6 29 28 20 2 24
第二趟为6 28 29 20 2 24
第三趟:  j为3,e为A[3] = 20,那么先比较的就是A[3-1]和e,其结果为A[3]被赋值为A[3-1],
而后j-- 进入A[2-1]和e的判断,同样是A[2]被赋值为A[1],
然后再判断A[0]和e,发现A[0]小于e,break退出,此时j=1,A[1]=e;end;
编辑于 2019-09-24 14:10:32 回复(0)
插入排序,好比打扑克,理牌的时候从左开始,抓一张往前找它该在的位置,然后插入
发表于 2022-07-27 16:27:20 回复(1)
C.
第一趟6 29 28 20 2 24
第二趟6 28 29 20 2 24
第三趟6 20 28 29 2 24
发表于 2019-09-23 16:01:06 回复(0)
此题关键是知道数组下标从0开始
第一趟6 29 28 20 2 24    
第二趟6 28 29 20 2 24    
第三趟6 20 28 29 2 24


编辑于 2022-01-20 14:53:08 回复(0)
b代码不能写清楚点?
发表于 2023-04-16 20:49:50 回复(0)
此题关键是知道数组下标从0开始
第一趟6 29 28 20 2 24
第二趟6 28 29 20 2 24
第三趟6 20 28 29 2 24
发表于 2020-08-06 10:31:53 回复(0)

此题关键是知道数组下标从0开始

发表于 2019-11-02 10:22:09 回复(0)
第三趟不是很理解
发表于 2022-03-15 10:49:58 回复(4)
c
发表于 2019-09-28 10:17:40 回复(0)
伪代码为从头开始插入排序: 第一次{6,29},28,20,... 第二次{6,28,29},20,... 第三次{6,20,28,29},...
发表于 2022-08-22 23:30:26 回复(0)
詀头像
算了半年
发表于 2022-04-01 15:17:54 回复(0)
if条件语句只判断一次,只有for和while才是循环语句,能够多次进行判断。 插入循环是从第二个开始的(也就是A[1]),相当于每次循环时起始点前面的序列都是已经排好的,从后往前找到比它小的就可以停了。
发表于 2023-04-20 16:56:36 回复(0)
走完A[j]=e后我是进while循环还是for循环?
发表于 2022-08-12 16:25:35 回复(1)