冒泡排序
从后往前,相邻两个数字进行比较,如果后面的小于前面的则需要交换位置,后面的大于前面的则保持原位置不变。永远是第n个数字与第n-1个数字进行比较。例如下图中n=4,那么就是第4与第3个数字进行比较;然后是第3个数字与第2个数字进行比较,以此类推。
快速排序
快速排序采用分治法,将一个大问题分为若干个与原问题类似的小问题。
例:
将序列 57、68、59、52、72、28、96、33、24、19,进行快速排序。
首先选择一个数字作为基准(基准最好是选择中位数,首个数字或者末尾数字次之),这里选择第一个数字57作为基准,同时在序列的末尾设置指针,指向序列最后一个数字。
令基准57与指针指向的数字19进行比较,57>19,大数字在后小数字在前,所以调换位置,19放到最前,57放到最后;
指针跟随19换到最前面,然后指向下一个数字68;
同样令基准57再与指针指向的数字68进行比较,68>57,大数字在后小数字在前,所以调换位置;
指针跟随68换到后面,然后指向下一个数字24;再进行比较,以此类推,直到基准57比完所有数字,将数字分成2组,小于57的在左侧,大于57的在右侧,如下图:
然后再将分成的小组用快速排序法进行排序。左侧选28作为基准进行快速排序,然后分别选择19、33再次进行快速排序;右侧选择68作为基准进行排序,然后选择72作为基准再次进行排序。最终得到快速排序结果:19、24、28、33、52、59、68、72、96。