八大排序算法的python 实现(插入排序、选择排序)
2019-03-18 16:42
405 查看
1 插入排序
算法适用于少量数据的排序,是稳定的排序方法。
[code]def insert_sort(lists): #插入排序 n = len(lists) for i in range (1,n): for j in range(i,0,-1): if lists[j]<lists[j - 1]: lists[j],lists[j - 1] = lists[j - 1] ,lists [j] else: break if __name__ =="__main__": lists = [54, 26, 93, 17, 77, 31, 44, 55, 20] insert_sort(lists) print(lists)
2 选择排序:最优时间复杂度:O(n^2)
最坏时间复杂度:O(n^2)
稳定性:不稳定(考虑升序每次选择最大的情况)
[code]def selectionsort(lists): n = len(lists) for i in range (0,n-1): min_index = i for j in range(i+1,n): if lists[j]<lists[min_index]: min_index = j if i !=min_index: lists[i],lists[min_index]= lists[min_index],lists[i] if __name__ == '__main__': lists = [54, 26, 93, 17, 77, 31, 38, 55, 20] print("原列表为:%s" % lists) selectionsort(lists) print("新列表为:%s" % lists)
3.冒泡排序
最优时间复杂度:O(n) (表示遍历一次发现没有任何可以交换的元素,排序结束。)
最坏时间复杂度:O(n^2)
稳定性:稳定
[code]def bubblesort(lists): n = len(lists) for i in range(0,n-1): count = 0 for j in range(0,n-i-1): if lists[j] >lists[j + 1]: lists[j], lists[j+1] = lists[j+1],lists[j] count +=1 if 0 ==count: break if __name__ == '__main__': lists = [54, 26, 93, 77, 44, 31, 44, 55, 20] print("原列表为:%s" % lists) bubblesort(lists) print("新列表为:%s" % lists)
4归并排序
相关文章推荐
- 用Python实现八大排序算法--直接选择排序
- 排序算法的C++ && Python实现---选择排序
- 算法基础:排序(一)——选择排序、插入排序、Shell排序——Python实现
- 【排序】用Python实现八大排序算法--堆排序
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 必须知道的八大种排序算法【java实现】(二) 选择排序,插入排序,希尔算法【详解】
- C#实现的3种排序算法--冒泡排序、选择排序、插入排序
- 算法基础:排序(一)——选择排序、插入排序、Shell排序——Python实现
- Python实现冒泡排序、选择排序、插入排序、快速排序、归并排序、二分法查找算法(基于《算法导论》伪代码)
- C#实现的3种排序算法--冒泡排序、选择排序、插入排序
- Python实现冒泡排序,选择排序,插入排序
- python实现插入排序和选择排序
- C语言基本排序算法之插入排序与直接选择排序实现方法
- 排序算法(三)冒泡、选择排序的Python实现及算法优化详解 推荐
- python3实现选择排序和插入排序
- python 实现排序算法(三)-选择排序和冒泡排序
- 常见排序算法的实现(归并排序、快速排序、堆排序、选择排序、插入排序、希尔排序)
- 排序算法(C++/JS/PYTHON/GO/JAVA/PHP实现)--选择排序(二)
- python实现插入排序,选择排序
- 用Python实现八大排序算法--插入排序