交换排序

原创 2011年01月15日 12:10:00

交换排序的基本方法是:两两比较待排序记录的排序关键字,并交换不满足顺序要求的那些偶对,直到全部满足为止。

 

冒泡排序:

通过无序区中相邻记录关键字间的比较和位置交换,使关键字最小的记录如气泡一般逐渐往上“漂浮”至“水面”。整个算法是从最下面的记录开始,对每两个相邻的关键字进行比较,且使关键字较小的记录换至关键字较大的记录之上,使得经过一趟冒泡排序后,关键字最小的记录,并把它换在第二个位置上。依此类推,一直到所有记录都有序为止。

 

 

快速排序:

快速排序是由冒泡排序改进而得的,它的基本思想是:在待排序的n个记录中任取一个记录(通常取第一个记录),把该记录放入最终位置,数据序列被此记录分割成两个部分。所有关键字比该记录关键字小的放置在前一部分,所有比它大的放置在后一部分,并把该记录排在这两部分的中间,这个过程称作一趟快速排序。之后对所有的两部分分别重复上述过程,直至每部分内只有一个记录为止。简言之,每趟使表的第一个元素归入终位,将表一分为二,对子表按递归方式继续这种划分,直至划分的子表长为1。

 

一趟快速排序采用从两头向中间扫描的办法,同时交换与基准记录逆序的记录。

具体的做法是:

设两个指示器i和j,它们的初值分别指向无序区中第一个和最后一个记录。假设无序区中记录为r[s],r[s+1],...r[t],则i的初值为s,j的初值为t,首先将r[s]移至变量r[0]中作为基准,令j自t起向左扫描至r[j].key<r[0].key时,将r[j]移动到i的位置上,然后令i自i+1起向右扫描直至r[i].key > r[0].key时,将r[i]移至j所指的位置上,依次重复至i=j,此时所有r[k](k=s,s+1,...,j-1)的关键字都小于r[0].key,而所有r[k](k=j+1,j+2,...,t)的关键字必须大于r[0].key,因而可将r[0]中的记录移至i所指位置r[i],它将无序的记录分割成r[s..j-1]和r[j+1..t],以便分别进行排序。

数据结构实验之排序二:交换排序

数据结构实验之排序二:交换排序 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 冒泡...
  • guoqingshuang
  • guoqingshuang
  • 2015年12月20日 18:55
  • 1697

java实现排序算法之交换排序(冒泡排序和快速排序)

交换排序是指通过交换元素位置来实现算法的排序:最典型的就是冒泡排序和快速排序,下面分别讲解这两种算法的算法思想,稳定性,时空复杂度和java的实现代码...
  • NFMSR
  • NFMSR
  • 2017年02月18日 22:56
  • 345

八大排序--交换排序 之 快速排序

快速排序
  • csdn_chb
  • csdn_chb
  • 2016年11月22日 15:39
  • 354

交换类排序详解及总结

交换类排序思想是通过一系列交换逆序元素进行排序的方法。本文首先介绍基于简单交换思想实现的冒泡排序法,在此基础上给出改进方法——快速排序法。 冒泡排序 【算法思想】反复扫描待排序记录序列,在...
  • Number_0_0
  • Number_0_0
  • 2017年03月21日 15:46
  • 1095

交换排序—快速排序(Quick Sort)

基本思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行分割,直到所有的数据都呈有序排列为止。其基本思路如下图所示...
  • u012434102
  • u012434102
  • 2015年05月11日 21:20
  • 289

直接交换排序

直接交换排序
  • YinJianxiang
  • YinJianxiang
  • 2017年03月26日 18:08
  • 529

java算法之三快速排序(交换排序)

快速排序的基本思想:          通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。      ...
  • a1961613299
  • a1961613299
  • 2016年01月12日 20:09
  • 766

排序算法四:交换排序之冒泡排序

排序算法四:交换排序之冒泡排序声明:引用请注明出处http://blog.csdn.net/lg1259156776/引言在我的博文《“主宰世界”的10种算法短评》中给出的首个算法就是高效的排序算法。...
  • LG1259156776
  • LG1259156776
  • 2015年09月25日 11:31
  • 2943

排序(一) 简单交换排序

排序(一) 简单交换排序   by斜风细雨QQ:253786989    2012-02-01 样例代码: // 简单交换排序 int data[9] = {8, 2, 1, 4, 9, 5...
  • NorthCan
  • NorthCan
  • 2012年02月02日 14:06
  • 1630

“深入理解”—交换排序算法

基于交换的排序算法有两种:冒泡排序和快速排序 冒泡排序(Bubble Sort)算法描述:比较相邻两个元素的大小,如果反序,则交换。若按升序排序,每趟将数据序列中的最大元素交换到最后位置,就像气泡...
  • qq_25827845
  • qq_25827845
  • 2016年07月10日 10:59
  • 1631
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:交换排序
举报原因:
原因补充:

(最多只允许输入30个字)