5、排序算法

排序算法有很多,包括插入排序,冒泡排序,堆排序,归并排序,选择排序,计数排序,基数排序,桶排序,快速排序等。

1、选择排序

每次在若干无序数据中查找最小数(最大数),放在无序数据的首位(末位)。

以升序为例:

#  从N个元素列表中找最小值及其下标,与第一个元素交换

#  从第二个元素开始的 N-1 个元素中找最小值及其下标,与第二个元素交换

#  以此类推,N-1 轮后排序完成

不稳定:当待排序列中有相等的元素时,排序过程中很可能打乱相等元素的位置,经常会来回交换,因此选择排序是不稳定的排序。

用python代码实现选择排序:

 

选择排序算法的分析:

# 选择排序共需比较 N-1 轮,总共的比较次数为 (N-1)+(N-2)+...+2+1=N(N-1)/2 次

# 选择排序执行交换的次数为N-1

 

2、冒泡排序

用python实现冒泡排序:

(冒泡排序比选择排序的效率还要低)

 

3、函数

用函数实现各种排序

 

4、归并排序:分而治之

# 将包含N个元素的列表拆分成两个含N/2个元素的子列表

# 对两个子列表递归调用归并排序(最后可将整个列表分解为N个子列表)

# 合并两个已排好序的子列表

用python实现归并排序:

归并排序算法的分析:

# 归并排序需要将列表一步步拆分成子列表,共 log2N

# 每一步都相当于需要合并N个元素的有序列表,最大比较次数是N次

# 归并排序需要至多Nlog2N 次比较

 

posted @ 2018-05-27 18:24  二十英里致远兄  阅读(94)  评论(0编辑  收藏  举报