作者:GoldenSpider 此贴贴于2010-12-7 21:33:37,已被阅读754次/回复1 
若是考虑浮点数的冒泡还是比较困难的
包括浮点数(比如双精度)的控制台输入,输出,浮点数的冒泡。。。
冒泡:
串冒泡;
整形冒泡;
实数冒泡(单精度,双精度)
-----------------------
这用c语言实现很容易
#include <stdio.h>

void DoubleBubbleSort( double* lpDest, int count )
{
    int bCount = 1, i, k;
    double temp;
 
    k = count;
    while( bCount )
    {
        k--;
        bCount = 0;
        for( i=0; i<k; i++ )
        {
            if( lpDest[i] > lpDest[i+1] )
            {
                temp = lpDest[i];
                lpDest[i] = lpDest[i+1];
                lpDest[i+1] = temp;
                bCount = 1;
            }
        }
    }
}

void IntBubbleSort(int * lpDest,int count)
{
    int bCount=1,i,k;
    int temp;

    k=count;
    while(bCount)
    {
        k--;
        bCount=0;
        for(i=0;i<k;i++)
        {
                if( lpDest[i] > lpDest[i+1] )
                {
                    temp = lpDest[i];
                    lpDest[i] = lpDest[i+1];
                    lpDest[i+1] = temp;
                    bCount = 1;
                }    
        }
    }
}

int main()
{
    int test1[7];
    double test2[6];
    int i;
    //---------------------------
    //整数冒泡排序测试
    
    printf("Please input 7 integer nums :\n");
    for(i=0;i<7;i++)
    {
        scanf("%d",&test1[i]);
        
    }
    printf("\n");
    IntBubbleSort(test1,7);
    
    for(i=0;i<7;i++)
    {
        printf("%d ",test1[i]);
        
    }
     printf("\n");
     
    //---------------------------
    //双精度浮点冒泡排序测试
    printf("Please input 6 real nums :\n");
    for(i=0;i<6;i++)
    {
        scanf("%lf",&test2[i]);
        
    }
    printf("\n");
    DoubleBubbleSort(test2,6);
    
    for(i=0;i<6;i++)
    {
        printf("%.4lf ",test2[i]);
        
    }
     printf("\n");
    
}


在二进制中游走~~~~~

此贴的父贴(直接):
bubblesort674 hikaru 2010-12-5 8:43:42 7132 正常+Mail回复贴
此贴的回复贴(直接):
浮点?敢来个汇编版的吗?605 hhh2000 2010-12-8 14:39:50 0 正常