常用的排序算法中冒泡法是对选择排序法的改进。

题目

常用的排序算法中冒泡法是对选择排序法的改进。

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有n个记录存储在带头结点的双向链表中,现用双向冒泡排序法对其按上升序进行排序,请写出这种排序的算法。(注:双向冒泡排序即相邻两趟排序向相反方向冒泡)。


参考答案:
  [算法描述]:
  typedef struct node
  { ElemType data;
  struct node *prior,*next;
  }node,*DLinkedList;
  void TwoWayBubbleSort(DLinkedList la)
  //对存储在带头结点的双向链表la中的元素进行双向起泡排序。
  {int exchange=1; // 设标记
  DLinkedList p,temp,tail;
  head=la //双向链表头,算法过程中是向下起泡的开始结点
  tail=null; //双向链表尾,算法过程中是向上起泡的开始结点
  while (exchange)
  {p=head->next; //p是工作指针,指向当前结点
  exchange=0; //假定本趟无交换
  while (p->next!=tail) // 向下(右)起泡,一趟有一最大元素沉底
  if (p->data>p->next->data) //交换两结点指针,涉及6条链
  {temp=p->next; exchange=1;//有交换
  p->next=temp->next;temp->next->prior=p //先将结点从链表上摘下
  temp->next=p; p->prior->next=temp; //将temp插到p结点前
  temp->prior=p->prior; p->prior=temp;
  }
  else p=p->next; //无交换,指针后移
  tail=p; //准备向上起泡
  p=tail->prior;
  while (exchange && p->prior!=head)
  //向上(左)起泡,一趟有一最小元素冒出
  if (p->dataprior->data) //交换两结点指针,涉及6条链
  {temp=p->prior; exchange=1; //有交换
  p->prior=temp->prior;temp->prior->next=p;
  //先将temp结点从链表上摘下
  temp->prior=p; p->next->prior=temp; //将temp插到p结点后(右)
  temp->next=p->next; p->next=temp;
  }
  else p=p->prior; //无交换,指针前移
  head=p; //准备向下起泡
  }// while (exchange)
  } //算法结束

第2题:

在下列排序算法中,哪一个算法的时间复杂度与初始排序无关()。

A、直接插入排序

B、冒泡排序

C、快速排序

D、直接选择排序


参考答案:D

第3题:

以下排序技术中属于交换类排序法的有________,属于插入类排序法的有________,属于选择类排序法的有________。 Ⅰ.简单插入排序 Ⅱ.冒泡排序 Ⅲ.希尔排序 Ⅳ.堆排序 Ⅴ.快速排序 Ⅵ.简单选择排序


正确答案:

Ⅱ Ⅴ

Ⅳ Ⅵ

第4题:

下面排序算法中,平均排序速度最快的是( )。

A.冒泡排序法

B.选择排序法

C.交换排序法

D.堆排序法


正确答案:D
在各种排序方法中,快速排序法和堆排序法的平均速度是最快的,因为它们的时间复杂度都是O(nlog2n),其他的排序算法的时间复杂度大都是O(n2)。

第5题:

以下关于排序算法的叙述中,正确的是( )。

A.冒泡排序法中,元素的交换次数与元素的比较次数一定相同

B.冒泡排序法中,元素的交换次数不少于元素的比较次数

C.简单选择排序中,关键字相同的两个记录在排序前后的相对位置一定不变

D.简单选择排序中,关键字相同的两个记录在排序前后的相对位置可能交换


正确答案:D
解析:冒泡排序法的基本思路是:将相邻位置上的关键字进行比较,如果为逆序,则交换,否则继续往下比较,直到序列已经排好。所以,在这个过程中,元素问的比较次数应大于或等于交换次数。简单选择排序算法的思路是:第1趟在n个记录中选择最小的记录,将它与第1个元素交换,第2趟在n-1个基类中选取最小记录,将它与第2个元素交换,依此类推,直到序列的第n个元素为止。在这个过程中,关键字相同的两个记录在排序前后的相对位置可能发生变化。例如,序列为(80,80,40,30)时,选择排序法需要将第1个元素80和最后一个元素30交换,这样就使得两个80的相对位置改变了。

第6题:

下列排序算法中,平均效率最低的排序算法是()

A、插入法

B、冒泡法

C、选择法

D、快速排序法


参考答案:B

第7题:

下列排序算法中,其中()是稳定的。

A、堆排序,冒泡排序

B、快速排序,堆排序

C、直接选择排序,归并排序

D、归并排序,冒泡排序


参考答案:D

第8题:

●以关键字比较为基础的排序算法在最坏情况下的计算时间下界为O(nlogn)。下面的排序算法中,最坏情况下计算时间可以达到O(nlogn)的是 (33) ;该算法采用的设计方法是 (34) 。

(33) A.归并排序

B.插入排序

C.选择排序

D.冒泡排序

(34) A.分治法

B.贪心法

C.动态规划方法

D.回溯法


正确答案:A,A
【解析】归并排序(merge sort),是把待排序的文件分成n个已排序的子文件,将这些文件合并得到完全排序的文件。n个记录的平均运算次数是O(nlog2n),所需的辅助存储空间是O(n),该算法采用的设计方法是分治法。

第9题:

以下各项排序技术中属于交换类排序法的是( )。

A.冒泡排序

B.希尔排序

C.堆排序

D.简单选择排序


正确答案:A
解析:所谓交换类排序法是指借助元素之间的相互交换进行排序的一种方法。它包括冒泡排序法和快速排序法。

第10题:

听力原文:)。

下面排序算法中,平均排序速度最快的是( )。

A.冒泡排序法

B.选择排序法

C.交换排序法

D.推排序法


正确答案:D
解析: 在各种排序方法中,快速排序法和堆排序法的平均速度是最快的,因为它们的时间复杂度都是O (nlog2n),其他的排序算法的时间复杂度大都是O(n2