快速排序
直接插入排序
二路归并排序
简单选择排序E.起泡排序F.堆排序
第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;
}
}
}
};
第2题:
对于具有n个元素的一个数据序列,若只需得到其中第k个元素之前的部分排序,最好采用(59),使用分治(Divide and Conquer)策略的是(60)算法。
A.希尔排序
B.直接插入排序
C.快速排序
D.堆排序
第3题:
插入排序算法的主要思想是:每次从未排序序列中取出一个数据,插入到已排序序列中的正确位置,InsertSort 类的成员函数sort()实现了插入排序算法,请将画线处缺失的部分补充完整。
class InsertSort{
public:
InsertSort(int*a0,int n0):a(a0),n(n0){}//参数组首地址,n 是数组元素个数
void sort()
{//此函数假设已排离序列初始化状态只包含a[0],未排序序列初始为a[1]?a[n-1]
for (int i=1;iint j;
for( [14] j>0;--j){
if(t>a[j-1])break;
a[j]=a[j-1];}
a[j]=t;}}
protected:
int*a,n;//指针a 用于存放数组首地址,n 用于存放数组元素个数
};
i%2==0
第4题:
插入排序算法的主要思想:每次从未排序序列中取出一个数据,插入到已排序序列中的正确位置。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;
}
}
}
第5题:
以下关于快速排序算法的描述中,错误的是( )。在快速排序过程中,需要设立基准元素并划分序列来进行排序。若序列由元素{12,25,30,45,52,67,85}构成,则初始排列为( )时,排序效率最高(令序列的第一个元素为基准元素)。
A.快速排序算法是不稳定的排序算法
B.快速排序算法在最坏情况下的时间复杂度为0(nlgn)
C.快速排序算法是一种分治算法
D.当输入数据基本有序时,快速排序算法具有最坏情况下的时间复杂度
第6题:
● 以下关于快速排序算法的描述中,错误的是 (64) 。在快速排序过程中,需要设立基准元素并划分序列来进行排序。若序列由元素{12,25,30,45,52,67,85}构成,则初始排列为 (65) 时,排序效率最高(令序列的第一个元素为基准元素)。
(64)A. 快速排序算法是不稳定的排序算法
B. 快速排序算法在最坏情况下的时间复杂度为O(n1gn)
C. 快速排序算法是一种分治算法
D. 当输入数据基本有序时,快速排序算法具有最坏情况下的时间复杂度
(65)A. 45,12,30,25,67,52,85
B. 85,67,52,45,30,25,12
C. 12,25,30,45,52,67,85
D. 45,12,25,30,85,67,52
第7题:
在待排序的元素序列基本有序的前提下,效率最高的排序方法是______。
A.冒泡排序
B.选择排序
C.快速排序
D.归并排序
第8题:
( 14 ) 插入排序算法的主要思想是 : 每次从未排序序列中取出一个数据 , 插入到已排序序列中的正确位置 。
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
int t=a[i];
int j;
for ( 【 14 】 ; j>0; --j){
if (t>=a[j-1]) break;
a[j]=a[j-1];}
a[j]=t;}}
protected:
int *a, n; // 指针 a 用于存放数组首地址, n 用于存放数组元素个数
};
第9题:
下列说法中错误的是:()
A.插入排序某些情况下复杂度为O(n)
B.排序二叉树元素查找的复杂度可能为O(n)
C.对于有序列表的排序最快的是快速排序
D.在有序列表中通过二分查找的复杂度一定是O(log2n)
第10题:
A.冒泡排序
B.直接插入排序
C.快速排序
D.希尔排序