抽象描述排序算法(不适合初学者)

本文不适合初学者和尚未理解排序算法的人,主要作为熟手归纳之用,所以本文力求以最简短的语言描述,以便记忆其原理。


以下i的起始值都为0

选择排序对一个序列A[0], A[1], A[2], ..., A[i], ..., A[n],假定A[0]至A[i]已有序,A[i+1]至A[n]尚无序,在无序序列中选择出最小元素与A[i+1]交交换,作为新的A[i+1]。


插入排序对一个序列A[0], A[1], A[2], ..., A[i], ..., A[n],假定A[0]至A[i]已有序,A[i+1]至A[n]尚无序,将A[i+1]插入到A[1]和A[i]之间的合适位置,插入后仍有序。


冒泡排序对一个序列A[0], A[1], A[2], ..., A[i], ..., A[n],假定A[0]至A[i]已有序,A[i+1]至A[n]尚无序,从A[n]开始到A[i+1],逐个两两比较,假定顺序为左小右大,将逆序的两者对换。


快速排序:对一个序列A[0], A[1], A[2], ..., A[i], ..., A[n]都无序,任选一个元素A[i],将小于A[i]的全部放到右边,大于A[i]的放到左边,对生成的两个子序列B[...]和C[...],重复此过程。


归并排序:对一个序列A[0], A[1], A[2], ..., A[i], ..., A[n]都无序,将其元素两两组合分成n/2个子序列,先把子序列排好序,再把子序列两两归并组成大的子序列,再重复此过程。


希尔排序:对一个序列A[0], A[1], A[2], ..., A[i], ..., A[n]都无序,选一个步长k,按步长将序列分成k个子序列,将所有子序列排成有序,降低k的值,重复此过程,直至k为1。


堆  排  序:对一个序列A[0], A[1], A[2], ..., A[i], ..., A[n]都无序,组成一个堆,取与堆顶,再重新组成堆,重复此过程,直至堆耗尽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值