软件工程与c语言chapter46课件.pptVIP

  • 9
  • 0
  • 约3.44千字
  • 约 18页
  • 2016-05-02 发布于江苏
  • 举报
4.6.2 快速排序 一. 基本思想 任取待排序序列中的某个元素作为基准(一般取第一个元素),将待排序元素分为左右两个子表,左子表中元素的关键字值均小于或等于基准元素的关键字值,右子表中元素的关键字值均大于或等于基准元素的关键字值,然后分别对两个子表继续进行划分,直至每一个子表只有一个元素或为空为止。最后得到的便是有序序列。 概括地说: 一次划分就是从表的两端交替方向地向中间进行扫描, 将小的放到左边, 大的放到右边, 作为基准的元素放到中间。 快速排序一次划分过程 1. i指向待划分区域最左端,j指向待划分区域最右端; 2. 保存基准元素的值,r[0]=r[i] ; 3.? ?从右向左扫描(首先开始此方向的扫描) j从右向左移动,直到r[j].keyr[0].key或i==j; 4.? 若 r[j].keyr[0].key ,则r[i]=r[j], i=i+1,改变扫描方向; 5.? ?从左向右扫描: i从左向右移动,直到r[i].keyr[0].key或i==j; 6.?? 若r[i].keyr[0].key,则 r[j]=r[i], j=j-1,改变扫描方向; 7. 重复3~6,直到i,j位置

文档评论(0)

1亿VIP精品文档

相关文档