交互设计算法基础(9)- Bubble Sort

  基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。每一趟排序后的效果都是讲没有沉下去的元素给沉下去。

  算法流程
  1)比较相邻的两个元素,如果前面的数据大于后面的数据,就将两个数据进行交换;这样对数组第0个元素到第n-1个元素进行一次遍历后,最大的一个元素就沉到数组的第n-1个位置;
  2)重复第2)操作,直到i=n-1。

  时间复杂度分析:O(n^2),冒泡排序是一种不稳定的排序算法。

void BubbleSort(int a[], int n) {
  int i, j;
  for (i=0; i<n; i++)
    //j的起始位置为1,终止位置为n-i
    for (j=1; j<n-i; j++)
      if (a[j]<a[j-1]) {
        int temp = a[j-1];
        a[j-1] = a[j];
        a[j] = temp;
      }
}
原文地址:https://www.cnblogs.com/x5115x/p/12637980.html