请说明冒泡排序算法的原理。

题目

请说明冒泡排序算法的原理。

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

第1题:

计算冒泡排序算法时间复杂性的阶。


参考答案:计算冒泡排序算法时间复杂度
  冒泡排序的主要步骤:
  for i=1 to n-1 do
  for j=1 to n-i do
  if a[j]>a[j+1] then交换a[j],a[j+1];
  用比较次数作为算法的计量,比较一次所花的时间为常数,用O(1)表示,内循环所花时间ΣO(1)=O(n-i),外循环所花时间:ΣO(n-i)=O(n(n-1)/2)=O(n²)

第2题:

在下列各种排序算法中,不是以“比较”作为主要操作的算法是()

  • A、选择排序
  • B、冒泡排序
  • C、插入排序
  • D、基数排序

正确答案:D

第3题:

有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)
  } //算法结束

第4题:

数据结构与算法里,冒泡排序是不稳定的排序。


正确答案:错误

第5题:

数据结构与算法里,属于稳定排序的有()。

  • A、冒泡排序
  • B、直接插入排序
  • C、希尔排序
  • D、改进的冒泡排序

正确答案:A,B,D

第6题:

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

A、堆排序,冒泡排序

B、快速排序,堆排序

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

D、归并排序,冒泡排序


参考答案:D

第7题:

请说明冒泡排序算法的原理。


正确答案:比较表中的相邻元素,如果它们是逆序的话就交换它们的位置;重复多次以后,最小的元素就像气泡一样升到了列表的第一个位置;第二遍操作将第二小的元素升起来;这样一直做,直到n-1遍以后,该列表就排好序了。

第8题:

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

A、插入法

B、冒泡法

C、选择法

D、快速排序法


参考答案:B

第9题:

数据结构与算法里,30个记录进行冒泡排序,使用未改进的冒泡排序,则需要()趟排序才能完成排序。

  • A、29
  • B、30
  • C、28
  • D、27

正确答案:A

第10题:

以下排序算法中,属于交换排序的算法有()

  • A、希尔排序
  • B、冒泡排序
  • C、快速排序
  • D、简单选择排序

正确答案:B,C