首页 > 试题广场 >

请问小明用的是什么排序算法?

[单选题]

假设小明用某个排序算法对整数序列(82,45,25,15,21)进行排序。以下为排序过程中序列状态的变化过程:

输入:82 45 25 15 21

第一步:45 82 25 15 21

第二步:25 45 82 15 21

第三步:15 25 45 82 21

······

请问小明用的是什么排序算法?

  • 选择排序
  • 归并排序
  • 快速排序
  • 插入排序
推荐
选D。该题考查的是不同排序方法的原理,从题目中可以得出是逐步将待排序的元素插入到已排序序列的对应位置,属于插入排序。
选择排序:将第一个元素作为基准,后面的元素依次和第一个元素做比较选出最小元素,并和第一个元素交换位置,所以经过第一步排序可以确定整个序列的最小元素A不正确
归并排序:两两合并排序,第一步的元素25,15应该交换位置作为子序列,所以B不正确。
快速排序:需要枢轴值为比较对象,第一步排序后会将序列分为大于枢轴和小于枢轴两部分,题目选项后三个元素均小于枢轴而没有放到枢轴之前,所以C不正确
编辑于 2019-04-11 14:21:41 回复(0)
是插入排序,特点是,第n轮,前n个数字会有序。
编辑于 2019-04-10 16:16:30 回复(1)
D、插入排序原理楼上大佬都说了,不会也可以用排除法
发表于 2019-04-11 09:07:53 回复(0)
第一步:是排序子数组 [82, 45] 的结果,即区间 [0, 1]
第二步:是排序子数组 [45,82,25] 的结果,即区间 [0, 2]
第三步:是排序子数组 [25,45,82,15] 的结果,即区间 [0, 3]
。。。
发表于 2022-11-12 18:43:24 回复(0)
<p>插入排序:第二个和第一个比 放入合适位置;第三个和前两个排好序的比 放入合适位置…</p><p>选择排序:从所有元素中选择最小的放到第一个;从剩下元素中选择最小放到第二个…</p>
发表于 2020-12-10 20:21:34 回复(0)
插入排序第n次有n个值有序
发表于 2020-07-28 17:28:21 回复(0)
注意与冒泡排序区分
发表于 2020-03-21 00:44:47 回复(0)
选D。插入排序
/*
 * 直接插入排序(稳定,时间复杂度:O(n^2))
 * 基本思想:
 * 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,
 * 然后从第2个记录逐个进行插入,直至整个序列有序为止。
 * 要点:设立哨兵,作为临时存储和判断数组边界之用。
 * 如果碰见一个和插入元素相等的,那么插入元素把***的元素放在相等元素的后面。
 * 所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。
 */
public class DirectInsertSort {
    public void directInsertSort(int[] a){
        for(int i = 1; i< a.length; i++){
            int key = a[i];//复制为哨兵,即存储待排序元素
            int j = i;
            for(; j > 0 && key < a[j-1]; j--){ //若第i个元素大于i-1元素,直接插入。小于的话,移动有序表后插入
                a[j] = a[j-1];//先后移一个元素,查找在有序表的插入位置
            }
            a[j] = key;//插入到正确位置
        }
    }
}


发表于 2019-04-10 18:45:57 回复(0)
选D

插入排序把序列分为了有序表和无序表,可以看出该题的分步中,每一步都会多一个元素被插入到有序表中。
发表于 2019-04-10 18:25:00 回复(0)
选D。插入排序
插入排序是第n次排序,取第n个数与前n-1个数进行比较,找到适合的位置插入。
发表于 2019-04-10 16:49:41 回复(0)