算法学习
Posted wdz1226
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法学习相关的知识,希望对你有一定的参考价值。
各种排序算法的Python实现
1.冒泡算法 :
冒泡排序可以把排序的变化过程想象成气泡从水中升起一样,非常的富有美感。谁有程序员没有审美的?
上面我们通过拿第一个数跟后面的依次比较,最后得出了最小数。如果我们用同样的方法从剩余的数组中拿出第二小的数,拿出第三小的数,这样我们不就完成了数组的排序么?理一下思路,我们需要两层循环。
‘‘‘ 冒泡排序 ‘‘‘ def bubble_sort(sort_list): iter_len = len(sort_list) if iter_len < 2: return sort_list for i in range(iter_len-1): for j in range(iter_len-i-1): if sort_list[j] > sort_list[j+1]: sort_list[j],sort_list[j+1] = sort_list[j+1],sort_list[j] return sort_list sort_list = [1,5,6,8,9,2,4] print(bubble_sort(sort_list))
#[1, 2, 4, 5, 6, 8, 9]
2.插入排序:
在玩扑克的时候我们通常会选择把抽到的牌插入到合适的位置,这样就可以保证在抽牌结束之后我们手中的牌是呈序列显示。借鉴此思路,我们可以拿当前的数与排序好的数组比较,若比已排好的数组中的数值小,则已排的数值后移,继续比较,指到遇到比已拍好的数值小的,则将其放入即可。后续重复进行此操作。
def insertion_sort(sort_list): iter_len = len(sort_list) if iter_len < 2: return sort_list for i in range(1, iter_len): key = sort_list[i] j = i - 1 while j>=0 and sort_list[j]>key: sort_list[j+1] = sort_list[j] j =j - 1 sort_list[j+1] = key return sort_list sort_list = [1,5,6,8,9,2,4,50,7] print(bubble_sort(sort_list))
#[1, 2, 4, 5, 6, 7, 8, 9, 50]
3.选择排序:
选择排序跟冒泡排序非常相似,冒泡排序是每次如果比它小就会交换位置,而选择排序不会马上交换位置,而是将比它小的数字的位置保存下来,直到循环结束后才交换位置。
def selection_sort(sort_list): iter_len = len(sort_list) if iter_len < 2: return sort_list for i in range(len(sort_list)-1): smallest = sort_list[i] location = i for j in range(i,iter_len): if sort_list[j] < smallest: smallest = sort_list[j] location = j if i != location: sort_list[i],sort_list[location] = sort_list[location],sort_list[i] return sort_list sort_list = [1,5,6,8,9,2,4,50,7,504,551,1226] print(bubble_sort(sort_list))
#[1, 2, 4, 5, 6, 7, 8, 9, 50, 504, 551, 1226]
以上是关于算法学习的主要内容,如果未能解决你的问题,请参考以下文章
有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]