算法----(1)冒泡排序
通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。
排序算法大体可分为两种:
一种是比较排序,时间复杂度O(nlogn)~O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序
另一种是非比较排序,时间复杂度可以达到O(n),主要有:基数排序,基数排序,桶排序
排序算法的稳定性:如果Ai = Aj, 排序前Ai在Aj之前,排序后Ai还在Aj之前,则称这种排序算法是稳定的
排序算法是否稳定,必须对算法发进行分析从而得到稳定的特性,是否稳定不是绝对的,由具体算法决定
排序算法稳定性好处,前一个键排序的结果可以为后一个键排序所用
冒泡排序
重复地走访过要排序的元素,依次比较相邻两个元素,如果他们的顺序错误就把他们调换过来,直到没有元素再需要交换,排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。
python代码:
1 def bubble_sort(arr): 2 for i in range(0, len(arr)): 3 for j in range(0, len(arr) - i - 1): 4 if arr[j] > arr[j + 1]: 5 arr[j], arr[j + 1] = arr[j+1], arr[j] 6 for i in range(len(arr)): 7 print(arr[i]) 8 9 10 def main(): 11 a = [1, 3, 2, 4, 9, -1] 12 bubble_sort(a) 13 14 15 if __name__ == '__main__': 16 main()