niusouti.com

1、对于已排序的n个元素数组,如果使用主元排序法,将其逆序排列,则需要n-1次数据交换。

题目

1、对于已排序的n个元素数组,如果使用主元排序法,将其逆序排列,则需要n-1次数据交换。


相似考题
更多“1、对于已排序的n个元素数组,如果使用主元排序法,将其逆序排列,则需要n-1次数据交换。”相关问题
  • 第1题:

    插入排序算法的主要思想是:每次从未排序序列中取出一个数据,插入已排序序列中的正确位置。Insert类的成员函数sort()实现了插入排序算法,请填空。

    class Insert{

    public:

    Insert(int*b0,int n0):b(b0),n(n0){};//参数b0是某数组首地址,n是数组元素个数

    void sort()

    {//此函数假设已排序序列初始化状态只包含b[0],未排序序列初始为b[1]…b[n-1]

    for(int i=1;i<n;++i)

    {

    int t=b[i];

    int j;

    for(______;j>0;--j)

    {

    if(t>=b[j-1])

    break;

    b[j]=b[j-1];

    b[j]=t;

    }

    }

    }

    };


    正确答案:j=i
    j=i 解析:在函数sort()中,外层for循环中依次将数组b中的值赋值给变量t,然后在内层循环中依次与已经排序的数组元素进行比较,并在符合条件的位置插入该元素。“int t=b[i];”语句可知数组中有i个元素已经排序。因此,根据内层循环中的j>0;--j语句,知道内层循环是将当前的第i个元素与j个元素进行比较,前面已知数组中有i个元素已经排序,根据题干中的要求“插入已排序序列中”,即j=i。

  • 第2题:

    插入排序算法的主要思想是:每次从未排序序列中取出一个数据,插入到己排序序列中的正确位置。InsertSort类的成员函数sort()实现了插入排序算法。请将画线处缺失的部分补充完整。

    class InsertSort{

    public:

    InsertSort(int* a0,int n0):a(a0),n(n0){}//参数a0是某数组首地址,n是数组元素个数

    void sort()

    {//此函数假设已排序序列初始化状态只包含a[0],未排序序列初始为a[1]…a[n-1]

    for(int i=1;i<n;++i){

    int t=a[i];

    int j;

    for(【 】;j>0;--j){

    if(t>=a[j-1])break;

    a[j]=a[j-1];}

    a[j]==t;}}

    protected:

    int*a,n;//指针a用于存放数组首地址,n用于存放数组元素个数

    };


    正确答案:j=i
    j=i 解析:本题考查的是插入排序算法。在sort()函数中是一个两重循环,外循环从1循环递增到n-1,即遍历未排序序列a[1]…a[n-1],取未排序序列中的第1个元素a[i] (i初值等于1)与已排序序列中的最后一个元素a[i-1]开始从后往前进行比较。内循环从后往前遍历已排序序列,使循环变量j的初值为i,则a[j-1]是已排序序列的最后一个元素。所以应该填j=i

  • 第3题:

    第二题 阅读以下说明和代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
    【说明】
    对n个元素进行简单选择排序的基本方法是:第一趟从第1个元素开始,在n个元素中选出最小者,将其交换至第一个位置,第二趟从第2个元素开始,在剩下的n-1个元素中选出最小者,将其交换至第二个位置,依此类推,第i趟从n-i+1个元素中选出最小元素,将其交换至第i个位置,通过n-1趟选择最终得到非递减排序的有序序列。 问题:2.1 【代码】
    #include
    void selectSort(int data[ ],int n)
    //对 data[0]~data[n-1]中的n个整数按非递减有序的方式进行排列
    {
    int i,j,k;
    int temp;
    for(i=0;i for(k=i,j=i+1;(1);(2)) //k表示data[i]~data[n-1]中最小元素的下标
    if(data[j] if(k!=i) {
    //将本趟找出的最小元素与data[i]交换
    temp=data[i]; (4) ;data[k]=temp;
    }
    }
    }

    int main()
    {
    int arr[ ]={79,85,93,65,44,70,100,57};
    int i,m;
    m=sizeof(arr)/sizeof(int); //计算数组元素的个数,用m表示
    (5); //调用selectSort对数组arr进行非递减排序
    for((6);i printf(“%d\t”,arr[i]);
    printf(“\n”);
    return 0;
    }


    答案:
    解析:
    j(2)j++
    (3)k=j
    (4)data[i]=data[k]
    (5)selectSort(arr,m)此处m也可以填8或者sizeof(arr)/sizeof(int), arr可以改成&arr[0]
    (6)i=0

    【解析】

    本题考查 C 程序设计基本技能及应用。简单选择排序方法是设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(Ri,Ri+1,…,Rn)中找出排序码最小的记录,与第i个记录交换。执行n-1趟后就完成了记录序列的排序。
    第1空应填j循环结束条件,j应该运行至序列末尾。填j第2空填j循环控制语句,j每次递增1,往后移动一个元素与a[i]进行比较。
    第3空为自动保存最大元素的下标,k=j。
    第4空为交换两个元素,temp为临时变量,保存data[i]的值,使用data[i]=data[k]使data[i]为后面n-i+1个记录(Ri,Ri+1,…,Rn)中找出排序码最小的记录,再将temp赋给data[k]。
    第5空为调用selectSort对数组arr进行非递减排序,selectSort有两个参数,数组和排序元素个数,为selectSort(arr,m)。
    第6空进行元素遍历输出所有的数组元素,从下标为0开始,所以填i=0。

  • 第4题:

    对于具有n个元素的序列采用堆积排序法进行排序,排序的总趟数为n-1。


    正确答案:正确

  • 第5题:

    排序的方法有很多种,()法从未排序序列中依次取出元素,与已排序序列中的元素作比较,将其放入已排序序列的正确位置上。()法从未排序序列中挑选元素,并将其依次放入已排序序列的一端。交换排序是对序列中元素进行一系列比较,当被比较的两元素为逆序时,进行交换;()和()是基于这类方法的两种排序方法,而()是比()效率更高的方法;()法是基于选择排序的一种方法,是完全二叉树结构的一个重要应用。


    正确答案:插入排序;选择排序;起泡排序;快速排序;快速排序;起泡排序;堆排序

  • 第6题:

    冒泡排序N个记录需要N-1趟排序,就可以完成排序。


    正确答案:正确

  • 第7题:

    对n个元素进行冒泡排序若某趟冒泡中只进行了()次元素间的交换,则表明序列已经排好序。

    • A、1
    • B、2
    • C、0
    • D、n-1

    正确答案:C

  • 第8题:

    冒泡排序(BubbleSort)如果一个数组有10个元素,那么要从小到大排列,利用冒泡排序法需要几趟比较过程()

    • A、10次
    • B、8次
    • C、7次
    • D、9次

    正确答案:D

  • 第9题:

    N个数进行冒泡排序需要N-1趟才能排序完毕


    正确答案:正确

  • 第10题:

    多选题
    关于冒泡排序的比较次数和排序趟数描述正确的是()。
    A

    N个记录最多N-1趟排序即可完成

    B

    N个记录最少比较N-1次,可完成排序,这是记录完全有序的情况

    C

    N个记录最多比较N*(N-1)/2次可完成排序,这是记录完全逆序的情况

    D

    在一趟排序中若无记录交换,就会停止排序


    正确答案: B,C
    解析: 暂无解析

  • 第11题:

    单选题
    对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数为()
    A

    n+1

    B

    n

    C

    n-1

    D

    n(n-1)/2


    正确答案: B
    解析: 暂无解析

  • 第12题:

    填空题
    排序方法有许多种,()法从未排序的序列中依次取出元素,与已排序序列(初始时为空)中的元素作比较,将其放入已排序序列的正确位置上;()法从未排序的序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端; 交换排序方法是对序列中的元素进行一系列比较,当被比较的两元素逆序时,进行交换;()和()是基于这类方法的两种排序方法, 而()是比()效率更高的方法;()法是基于选择排序的一种排序方法,是完全二叉树结构的一个重要应用。

    正确答案: 插入排序,选择排序,起泡排序,快速排序,快速排序,起泡排序,堆排序
    解析: 暂无解析

  • 第13题:

    对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数最多为()。

    A.n+1

    B、n

    C、n-1

    D、n(n-1)/2


    参考答案:D
    解释:比较次数最多时,第一次比较n-1次,第二次比较n-2次……最后一次比较1次,即(n-1)+(n-2)+…+1=n(n-1)/2。

  • 第14题:

    按排序策略分类,冒泡排序属于(59)。对n个记录的文件进行排序时,如果待排序文件中的记录初始时为所要求次序的逆序,则冒泡排序过程中需要进行(60)次元素值的比较。

    (50)

    A.插入排序

    B.选择排序

    C.交换排序

    D.归并排序


    正确答案:C

  • 第15题:

    对n个元素进行冒泡排序,通常要进行n-1趟冒泡,在第j趟冒泡中共要进行()次元素间的比较。

    Aj

    Bj-1

    Cn-j

    Dn-j-1


    C

  • 第16题:

    关于冒泡排序的比较次数和排序趟数描述正确的是()。

    • A、N个记录最多N-1趟排序即可完成
    • B、N个记录最少比较N-1次,可完成排序,这是记录完全有序的情况
    • C、N个记录最多比较N*(N-1)/2次可完成排序,这是记录完全逆序的情况
    • D、在一趟排序中若无记录交换,就会停止排序

    正确答案:A,B,C,D

  • 第17题:

    采用下列排序算法对n个元素进行排序,其排序趟数肯定为n-1趟的排序方法有()。

    • A、选择和插入
    • B、冒泡和快速
    • C、插入和快速
    • D、选择和冒泡

    正确答案:A

  • 第18题:

    N个记录采用冒泡排序,最好情况比较N-1次。


    正确答案:正确

  • 第19题:

    对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数为()

    • A、n+1
    • B、n
    • C、n-1
    • D、n(n-1)/2

    正确答案:D

  • 第20题:

    冒泡排序算法中降序排序指的是()

    • A、从高到低排列数组元素值
    • B、从低到高排列数组元素的值
    • C、由横向到纵向排列数组元素的值
    • D、由纵向到横向排列数组元素的值

    正确答案:A

  • 第21题:

    判断题
    冒泡排序N个记录需要N-1趟排序,就可以完成排序。
    A

    B


    正确答案:
    解析: 暂无解析

  • 第22题:

    单选题
    每一趟排序都从未排序序列中依次取出一个元素依次与已排序序列中的元素进行比较,然后将其放在已排序序列中的合适位置,这种排序方法称为()。
    A

    选择排序法

    B

    插入排序法

    C

    泡排序法

    D

    堆积排序法


    正确答案: C
    解析: 暂无解析

  • 第23题:

    单选题
    在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是__(1)__。从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为__(2)__。设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用__(3)__排序法。空白(1)处应选择()
    A

    希尔排序

    B

    起泡排序

    C

    插入排序

    D

    选择排序


    正确答案: D
    解析: 暂无解析

  • 第24题:

    判断题
    对于具有n个元素的序列采用堆积排序法进行排序,排序的总趟数为n-1。
    A

    B


    正确答案:
    解析: 暂无解析