冒泡算法

冒泡算法:

外围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("\n");
}

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

    for (int i=1; i<len; i++)
    {
        printf("%dst---------------------\n",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\n", len);
    printTable(numberTable, len);
 
    buble_sort(numberTable, len);
 /*   for (int i=1; i<len; i++)
    {
        printf("%dst---------------------\n",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);
        }
    } */
}

posted @ 2018-11-18 18:01  thinking......  阅读(171)  评论(0)    收藏  举报