python 冒泡排序

經典排序算法 - 冒泡排序Bubble sort

 

經典排序算法 - 冒泡排序Bubble sorthtml

原理是臨近的數字兩兩進行比較,按照從小到大或者從大到小的順序進行交換,python

這樣一趟過去後,最大或最小的數字被交換到了最後一位,算法

而後再從頭開始進行兩兩比較交換,直到倒數第二位時結束,其他相似看例子數組

例子爲從小到大排序,post

原始待排序數組| 6 | 2 | 4 | 1 | 5 | 9 |url

 

第一趟排序(外循環)spa

第一次兩兩比較6 > 2交換(內循環)htm

交換前狀態| 6 | 2 | 4 | 1 | 5 | 9 |blog

交換後狀態| 2 | 6 | 4 | 1 | 5 | 9 |排序

 

第二次兩兩比較,6 > 4交換

交換前狀態| 2 | 6 | 4 | 1 | 5 | 9 |

交換後狀態| 2 | 4 | 6 | 1 | 5 | 9 |

 

第三次兩兩比較,6 > 1交換

交換前狀態| 2 | 4 | 6 | 1 | 5 | 9 |

交換後狀態| 2 | 4 | 1 | 6 | 5 | 9 |

 

第四次兩兩比較,6 > 5交換

交換前狀態| 2 | 4 | 1 | 6 | 5 | 9 |

交換後狀態| 2 | 4 | 1 | 5 | 6 | 9 |

 

第五次兩兩比較,6 < 9不交換

交換前狀態| 2 | 4 | 1 | 5 | 6 | 9 |

交換後狀態| 2 | 4 | 1 | 5 | 6 | 9 |

 

第二趟排序(外循環)

第一次兩兩比較2 < 4不交換

交換前狀態| 2 | 4 | 1 | 5 | 6 | 9 |

交換後狀態| 2 | 4 | 1 | 5 | 6 | 9 |

 

第二次兩兩比較,4 > 1交換

交換前狀態| 2 | 4 | 1 | 5 | 6 | 9 | 
交換後狀態| 2 | 1 | 4 | 5 | 6 | 9 |

 

第三次兩兩比較,4 < 5不交換

交換前狀態| 2 | 1 | 4 | 5 | 6 | 9 | 
交換後狀態| 2 | 1 | 4 | 5 | 6 | 9 |

 

第四次兩兩比較,5 < 6不交換

交換前狀態| 2 | 1 | 4 | 5 | 6 | 9 |

交換後狀態| 2 | 1 | 4 | 5 | 6 | 9 |

 

第三趟排序(外循環)

第一次兩兩比較2 > 1交換

交換後狀態| 2 | 1 | 4 | 5 | 6 | 9 |

交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 |

 

第二次兩兩比較,2 < 4不交換

交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 | 
交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 |

 

第三次兩兩比較,4 < 5不交換

交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 | 
交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 |

 

第四趟排序(外循環)無交換

第五趟排序(外循環)無交換

 

排序完畢,輸出最終結果1 2 4 5 6 9

代碼僅供參考

def sor(a):
     for i in range(len(a))[::-1]:
             for j in range(i):
                     if a[j]>a[j+1]:
                             a[j],a[j+1]=a[j+1],a[j]
                             print a
     return a
...
>>> a=[6,2,4,1,5,9]
>>> sor(a)
[2, 6, 4, 1, 5, 9]
[2, 4, 6, 1, 5, 9]
[2, 4, 1, 6, 5, 9]
[2, 4, 1, 5, 6, 9]
[2, 1, 4, 5, 6, 9]
[1, 2, 4, 5, 6, 9]
[1, 2, 4, 5, 6, 9]
相關文章
相關標籤/搜索