冒泡算法

Posted tedani

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡算法相关的知识,希望对你有一定的参考价值。

冒泡算法:

外围for控制大循环需N次,

内存控制每次大循环需比对M次。

    因每次大循环,均挪移一个最大(最小值)到Table首或Table尾,因此下一个大循环则比前一次少一个循环(下一个循环挪移【第二大】or【第二小】到对应位置)

#include <stdio.h>

void printTable(int* p, int len)
{
    int i;
    
    printf("numberTable: ");
    for (i=0; i<len; i++)
    {
        printf("%d ",*(p+i));
    }
    printf(" ");
}

void buble_sort(int* p, int len)
{
    int i,j,temp;

    for (int i=1; i<len; i++)
    {
        printf("%dst--------------------- ",i);
        for (int j=0; j<len-i; j++)
        {
            if (*(p+j) < *(p+j+1))
            {
                temp = *(p+j);
                *(p+j) = *(p+j+1);
                *(p+j+1) = temp;
            }
            printTable(p, len);
        }
    }
}

void main(void)
{
    int numberTable[] = {5,13,2,76,24,31,1};
    int i,j,temp,len=sizeof(numberTable)/sizeof(int);

    printf("numberTable len:%d ", len);
    printTable(numberTable, len);
 
    buble_sort(numberTable, len);
 /*   for (int i=1; i<len; i++)
    {
        printf("%dst--------------------- ",i);
        for (int j=0; j<len-i; j++)
        {
            if (numberTable[j] < numberTable[j+1])
            {
                temp = numberTable[j];
                numberTable[j] = numberTable[j+1];
                numberTable[j+1] = temp;
            }
            printTable(numberTable, len);
        }
    } */
}


























































以上是关于冒泡算法的主要内容,如果未能解决你的问题,请参考以下文章

冒泡排序算法有几种写法?

排序算法系列:冒泡排序与双向冒泡排序

冒泡算法

排序算法之冒泡排序

冒泡排序算法和选择排序算法比较

算法|排序算法-冒泡排序