交换排序:冒泡排序和快速排序

交换排序有冒泡排序和快速排序两种
冒泡排序:
从K1开始,依次比较两个相邻的关键字Ki和Ki+1。若Ki>Ki+1,则交换相应记录Ri和Ri+1的位置;否则,不进行交换。
经过这样一遍处理后,使关键字最大的记录如冒泡一样逐步“漂浮”至“水面”,关键字最大的记录移到了第N个位置。 然后对前面的N-1个记录进行第2遍排序,重复以上操作,直到经过N-1遍。
例:用冒泡排序排序(43 21 89 15 47 28)
交换排序:冒泡排序和快速排序
如图所示43和21比较,21较小,放在左边。43再和89比较,43较小,放在左边。89再和15比较,15较小,放在左边…

快速排序:
快速排序又称划分排序,它是目前所有排序算法中速度最快的一种。
采用从表首尾向中间扫描,同时交互与基准记录逆序的记录,设两个顺序表位置指示器low和high,它们的初值分别指向无序区的第一个记录和最后一个记录,首先把第一个记录为枢轴保存在变量tmp中,其关键字为pivotkey。首先从high所指位置起向前搜索,找到第一个关键字小于pivotkey的记录和low位置互相交换,low向后移动一位;然后从low所指位置起向后搜索,找到第一个关键字大于pivotkey的记录和high位置互相交换,high向前移动一位。这样重复这两步,直到low=high。