数据结构(第十章内部排序)-精选(公开课件).pptVIP

  • 19
  • 0
  • 约9.25千字
  • 约 47页
  • 2018-11-02 发布于广西
  • 举报

数据结构(第十章内部排序)-精选(公开课件).ppt

最大堆的初始化 最大堆的初始化step1 最大堆的初始化step2 最大堆的初始化step3 最大堆的初始化step4_0 最大堆的初始化step4_1 最大堆的初始化step5_0 最大堆的初始化step5_1 最大堆的初始化step5_2 一个对象序列的排序码为{46,79,56,38,40,84},采用快速排序以位于最左位置的对象为基准而得到的第一次划分结果为( )。 A.{38,46,79,56,40,84} B.{38,79,56,46,40,84} C.{40,38,46,56,79,84} D.{38,46,56,79,40,84} 设有5000个无序的元素,希望用最快的速度挑选出其中前50个最大的元素,最好选用(????? )法。 A.冒泡排序???????? ????????????B.快速排序 C.堆排序??????????? ??????? ????D.基数排序 下列序列中(   )是执行第一趟快速排序后得到的序列(排序的关键字类型是字符串)。 A.[da,ax,eb,de,bb]ff[ba,gc]  B.[cd,eb,ax,da,bb]ff[ha,gc] C.[gc,ax,cb,cd,bb]ff[da,ba]  D.[ax,bb,cd,da]ff[eb,gc,ba] 分别采用堆排序、快速排序、插入排序和归并排序算法对初始状态递增序列的按递增顺序排序,最省时间的是算法__________,最费时间的是算法__________。 假定一组记录的排序码为(46,79,56,38,40,84,50,42),利用堆排序方法画出初始大顶堆(以树状表示)。 对于一组记录的排序码为(465,792,562,383,401,845,502,423),写出基数排序(低位优先)进行一趟分配与回收后的结果。 以下为直接插入排序算法: void InsSort(RecordType r[], int length) /*对记录数组r做直接插入排序, length为数组的长度*/ {  for ( i=2 ; i length ; i++ )  { r[0]=r[i]; j=i-1; /*将待插入记录存放到r[0]中*/  while (r[0].key r[j].key ) /* 寻找插入位置 */ { r[j+1]= r[j]; j=j-1; } r[j+1]=r[0]; /*将待插入记录插入到已排序的序列中*/ } } /* InsSort */ 约定待排记录数为n,给出该算法的最大比较次数和最大移动次数。 假定有k个关键字互为同义词,若用线性探测法将这k个关键字存入散列表中,至少需要进行( )次探测。 A.k-1 B.k C.k+1 D.k(k+1)/2 一个对象序列的排序码为{46,79,56,38,40,84},采用快速排序以位于最左位置的对象为基准而得到的第一次划分结果为( )。 A.{38,46,79,56,40,84} B.{38,79,56,46,40,84} C.{40,38,46,56,79,84} D.{38,46,56,79,40,84} 从一棵二叉排序树中查找一个元素时,其平均时间复杂度为( )。 A.O(1) B.O(n) C.O(1og2n) D.O(n2) 例,序列 49 38 65 97 76 13 27 50 1. 按顺序依次构造成完全二叉树的结点; 49 38 65 97 76 13 27 50 2. 把完全二叉树改造成堆; 从下向上,父子交换; 50 97 13 65 13 49 49 27 3. 取得最小值 13 4. 删除 13 ,重新改造成新堆; 13 97 27 97 97 49 5. 取得次小值 27; 6. 删除 27 ,重新改造成新堆; 97 27 97 38 97 50 7. 取得次次小值 38; 10.5 归并排序 归并: 将两个或两个以上的有序表合并成一个新的有序表。 有序线性表、有序链表的归并; 利用归并的思想实现排序 : 初始,n 个记录看作是 n 个有序的子序列,长度为 1 ; 两两归并,得到 n/2 个长度为 2 或 1 的有序的子序列 ; 再两两归并 ; 重复执行直至得到一个长度为 n 的有序序列为止 。 这种排序方法称为 2—路归并排

文档评论(0)

1亿VIP精品文档

相关文档