冒泡排序

假设待排序表长为n,从后向前(或从前往后)两两比较相邻元素的值,若为逆序,则交换他们,直到序列比较完,这是一趟冒泡排序,结果是将最小的元素交换到待排序列的第一个位置。下一趟排序的时候,前一趟确定的最小元素不在参与比较,待排序列减少一个元素,每趟冒泡排序的结果是把序列中的最小元素放到了序列的最终位置,……,这样最多做n-1趟冒泡就能把所有的元素排好序。
  1. void BubbleSort(ElemType A[], int n)
  2. {
  3. //用冒泡排序将序列A中的元素按从小到大进行排列
  4. for(i=0; i<n-1; i++)
  5. {
  6. flag=false;
  7. for(j=n-1; j>i; j--)
  8. {
  9. if(A[j-1].key>A[j].key)
  10. {
  11. swap(A[j-1], A[j]);
  12. flag=true;
  13. }
  14. }
  15. if(flag==false)
  16. return ;
  17. }
  18. }
时间复杂度:o(n^2)
稳定排序




posted @ 2015-08-22 14:37  Lucas_1993  阅读(345)  评论(0编辑  收藏  举报