冒泡排序是最容易想到的代码,也是最易写出的代码。但是当我学完这一节,发现我原来的冒泡排序写法,居然是伪冒泡....尴尬了
冒泡排序(Bubble Sort)一种交换排序,他的基本思想是:两两比较相邻记录的关键字,如果反序则交换,知道没有反序的记录为止

数据:

int a[10] = { 5, 2, 6, 0, 3, 9, 1, 7, 4, 8 };

版本一---冒泡排序(我们最常想到的)

void BubbleSort01(SqList *L)
{
    int i, j;
    for (i = 1; i < L->length;i++)
    {
        for (j = i + 1; j <= L->length;j++)
        {
            if (L->r[i]>L->r[j])
                swap(L, i, j);    //交换顺序
        }
    }
}
严格来说,不是标准的冒泡排序,因为不满足“两两比较相邻记录”的冒泡排序思想。是使用第一个数据,从头比较到尾;然后选用第二个,以此类推,直到比较结束
int main()
{
    SqList s;
    s.length = 0;
    int i;
    int a[10] = { 5, 2, 6, 0, 3, 9, 1, 7, 4, 8 };
    for (i = 0; i < 10; i++)
    {
        s.r[i + 1] = a[i];
        s.length++;
    }

    BubbleSort01(&s);

    for (i = 1; i <= s.length; i++)
        printf("%d ", s.r[i]);

    system("pause");
    return 0;
}
测试代码

相关文章:

  • 2021-09-18
  • 2021-07-17
  • 2022-02-19
  • 2021-04-24
猜你喜欢
  • 2022-12-23
  • 2021-12-05
  • 2021-12-28
  • 2021-08-21
  • 2021-07-08
  • 2021-10-02
  • 2021-10-12
相关资源
相似解决方案